解决有乱码与换行问题的文件

话说windows与其他系统相处说会有那么些不和谐的事——乱码与换行(自行百科),下面实例记录一下解决办法.

Office Excel里的一些数据(直接复制过来):

1
2
3
4
5
6
7
8
9
10
曼谷 3049072 泰国 亚洲
清迈 2941909 泰国 亚洲
普吉岛 2914508 泰国 亚洲
首尔 2479881 韩国 亚洲
东京 2144100 日本 亚洲
新加坡 1803367 新加坡 亚洲
大阪 1513988 日本 亚洲
亚庇 1503552 马来西亚 亚洲
济州岛 1235938 韩国 亚洲
马累 1223937 马尔代夫 亚洲

直接另存为csv文件

在Terminal下打开显示乱码

1
Âü¹È;3049072;Ì©¹ú;ÑÇÖÞ^MÇåÂõ;2941909;Ì©¹ú;ÑÇÖÞ^MÆÕ¼ªµº;2914508;Ì©¹ú;ÑÇÖÞ^MÊ׶û;2479881;º«¹ú;ÑÇÖÞ^M¶«¾©;2144100;ÈÕ±¾;ÑÇÖÞ^MмÓÆÂ;1803367;мÓÆÂ;ÑÇÖÞ^M´óÚæ;1513988;ÈÕ±¾;ÑÇÖÞ^MÑDZÓ;1503552;ÂíÀ´Î÷ÑÇ;ÑÇÖÞ^M¼ÃÖݵº;1235938;º«¹ú;ÑÇÖÞ^MÂíÀÛ;1223937;Âí¶û´ú·ò;ÑÇÖÞ

iconv直接一步搞定乱码

1
iconv -f GB18030 -t UTF8 test.csv > test1.csv

再次打开后乱码的问题没有了

1
曼谷;3049072;泰国;亚洲^M清迈;2941909;泰国;亚洲^M普吉岛;2914508;泰国;亚洲^M首尔;2479881;韩国;亚洲^M东京;2144100;日本;亚洲^M新加坡;1803367;新加坡;亚洲^M大阪;1513988;日本;亚洲^M亚庇;1503552;马来西亚;亚洲^M济州岛;1235938;韩国;亚洲^M马累;1223937;马尔代夫;亚洲

等等,为什么变成一行了?还多了一个\^M是什么?原来是换行符导致的

这次用VIM的替换命令吧

1
%s/^M/^M/g

第一个\^M的输入是依次按下Ctrl+vCtrl+M,第二个\^M的输入是依次按下Ctrl+v换行键,

再看一下:

1
2
3
4
5
6
7
8
9
10
曼谷;3049072;泰国;亚洲
清迈;2941909;泰国;亚洲
普吉岛;2914508;泰国;亚洲
首尔;2479881;韩国;亚洲
东京;2144100;日本;亚洲
新加坡;1803367;新加坡;亚洲
大阪;1513988;日本;亚洲
亚庇;1503552;马来西亚;亚洲
济州岛;1235938;韩国;亚洲
马累;1223937;马尔代夫;亚洲

大功告成!

坚持原创技术分享,您的支持将鼓励我继续创作!