linux学习|从window拷贝代码到ubuntu(linux)乱码问题解决

今天给大家代码几个实用的linux上的命令
由于日常工作学习都是在linux系统下进行,但家中为了便于家人应用pc上装的都是window系统,
所以有时难免会把工作带到家中,特别是一些源码(当然公司禁止的源码不会带到家中),在window
系统上编辑过后,在回到linux系统,打开时自己所写的中文注释,或者一些中文文档就会变成乱码(不仅仅中文),
稍微懂点电脑知识的都很容易理解,由于编码方式不同可能会造成此类问题。
有时会出现从ubuntu上拷贝文件到window下,利用window下各种编辑软件进行转码,依然无法解决乱码问题。
最终还是得从ubuntu端下手。
乱码如下:

countCHs=countCHs+1; %??í·êy+1 packets_TO_BS=packets_TO_BS+1; %???íμ??ù??μ???êy?÷+1 PACKETS_TO_BS(r+1)=packets_TO_BS; %???????íμ??ù??μ???êy?÷=???íμ??ù??μ???êy?÷S(i).type='C'; %?úμ?ààDí?a??í· S(i).G=100; C(cluster).xd=S(i).xd; %??í·X?á×?±ê C(cluster).yd=S(i).yd; %??í·Y?á×?±ê plot(S(i).xd,S(i).yd,'k*'); %ê?3??úμ?£?ó?oú*±íê?distance=sqrt( (S(i).xd-(S(n+1).xd) )^2 + (S(i).yd-(S(n+1).yd) )^2 ); %?????àà? C(cluster).distance=distance; %?àà? C(cluster).id=i; %??í·μ??úμ?±ào? X(cluster)=S(i).xd; %X?á×?±ê Y(cluster)=S(i).yd; %Y?á×?±ê cluster=cluster+1; %??í·×üêy+1

对于此类问题解决办法不止一种(我只讲linux上简单的编码方式转换的问题):
iconv -f encoding -t encoding inputfile
#比如将一个UTF-8编码的文件转换成GBK编码
iconv -f UTF-8 -t GBK file1 -o file2
#转码后,在Linux上面就不会乱码了
将GBK转换成utf-8
iconv -f GBK -t UTF-8 file1 -o file2

一种编码格式到另外一种格式
iconv 命令在ubuntu help命令下可以查看具体的用法。
参数含义:
-f encoding :把字符从encoding编码开始转换。
-t encoding :把字符转换到encoding编码。
-l :列出已知的编码字符集合
-o file :指定输出文件
-c :忽略输出的非法字符 //重要
-s :禁止警告信息,但不是错误信息
--verbose :显示进度信息

对上述乱码进行转码:
iconv -f GBK -t UTF-8 leachdemo.m -o leachdemo2.m
利用iconv 命令对上述乱码转码之后:
countCHs=countCHs+1; %簇头数+1 packets_TO_BS=packets_TO_BS+1; %传送到基站的计数器+1 PACKETS_TO_BS(r+1)=packets_TO_BS; %每轮传送到基站的计数器=传送到基站的计数器 S(i).type='C'; %节点类型为簇头 S(i).G=100; C(cluster).xd=S(i).xd; %簇头X轴坐标 C(cluster).yd=S(i).yd; %簇头Y轴坐标 plot(S(i).xd,S(i).yd,'k*'); %输出节点,用黑*表示 distance=sqrt( (S(i).xd-(S(n+1).xd) )^2 + (S(i).yd-(S(n+1).yd) )^2 ); %计算距离 C(cluster).distance=distance; %距离 C(cluster).id=i; %簇头的节点编号 X(cluster)=S(i).xd; %X轴坐标 Y(cluster)=S(i).yd; %Y轴坐标 cluster=cluster+1; %簇头总数+1

有时转码后依然会出现乱码,可以利用iconv的参数-c,忽略掉一些问题,就可以了。
iconv -f GBK-t UTF-8 -c leach.m > leach1.m
【linux学习|从window拷贝代码到ubuntu(linux)乱码问题解决】

    推荐阅读