您的位置:首页 > 其它

关于UTF-8,ANSI,以及Unicode的一些文章

2014-02-24 11:46 204 查看

缘起

我从上大学开始使用windows系统二年半后换成Ubuntu,以前在windows下写得代码文件和相应的txt文本中很多都是保存为Windows下ANSI码格式的,而这些文件一到Ubuntu下全部都乱码了,而且文件的数量巨大。以前脑残,都是自己用别人的windows系统上的笔记本程序一个一个另存为,修改编码格式为UTF-8。昨天,我再次遇到这个问题时,我想是不是有什么可以批量处理的。

正文

批量修改文件的编码,自己想到这样的一些解决方法: 1. 存在一个软件,输入需要转化的文件,选择转换,然后就OK了 2. 寻找一个可以批量处理脚本,运行一下。

PS,后来,我发现了Linux下一个很好用的命令iconv, 并且发现自己的认识的错误,我知道windows下中的中文显示使用了代码页(code page)的,没想到其中的编码是GBK。iconv命令使用很简单:

iconv -f GBK -t UTF-8 **.txt
这样,一个命令就可以将文件编码进行转换。现在在来看下面的这个愚蠢的解决方案,真是又蠢又麻烦,这正如以前的我一样,又蠢又笨。

最后,我找到一个解决方法,借助EditPlus这个windows文本编辑器。首先,打开所要转换的所有文件。其次,选择文档-->文件编码-->批量修改文件编码 (英文菜单为:Document--> File encoding-->File encoding Mutipile)



选择需要修改的文件,全部需要,Ctrl + A全选



选择需要转化为的目标编码,若要在Linux上查看,可以选择为Unicode或者UTF-8:



保存并转化文件:



(以上参考:EditPlus批量修改文件编码:http://www.shelwee.com/html/archives/66234.html)

关于可批量运行并转化的代码,在网上找到了一份python代码,但是,自己没来的急看懂。等看懂了在添加进来,参考自:Python3批量转换文本文件编码: http://www.oschina.net/code/snippet_105515_1546

PS: 若干月后某一个明朗的下午,偶然从同学那里得到一个小经验,如果安装了Ubuntu下安装QT的开发环境,可以利用QT自带的文件编码处理来解决乱码的问题,我以前一直以为不能在Linux环境下转换的windows ANSI码的文档的,每次都要跑到Windows转文件格式,看来只是我的偏见而已。由此可见,与人交流是很重要的,可以开阔视野,意识到自己的狭隘和偏见。

小结

面对出现乱码的问题,不禁要问,为毛会这样,为什么要乱码? 我有做了一些搜索,发现这下的这些地方对这个问题的原因解释的非常的清楚

首先是,阮一峰的: 字符编码笔记:ASCII,Unicode和UTF-8: http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

其次是,知乎上关于“Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?” : http://www.zhihu.com/question/20650946
其中有些缩写的解释(UCS:Universal Character Set ,BOM:Byte Order Mark,UTF : UCS Transfer Format)

关于UTF-8权威的资料: UTF-8, a transformation format of ISO 10646 :http://www.ietf.org/rfc/rfc3629.txt

一些其他关于这个问题的讨论的文章:

程序员趣味读物:谈谈Unicode编码: http://www.pconline.com.cn/pcedu/empolder/gj/other/0505/616631.html

大名鼎鼎的Joel Spolsky关于这方面的讨论: http://www.joelonsoftware.com/articles/Unicode.html

汉字编码及Linux中文处理: http://blog.chinaunix.net/uid-20587912-id-405017.html

Unicode 标准工作组:http://www.unicode.org/standard/standard.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: