关于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
相关文章推荐
- 转发一篇关于ANSI,Unicode,UTF-8编码的文章,我认为是最容易动的,最详细的
- ASCII,Unicode,UTF-8,GB2312一些关于字符编码的理解
- 关于编码ansi、GB2312、unicode与utf-8的区别
- 关于UTF-8的BOM标识以及非法字符65279错误的一些记录
- 关于ASCII、GB231、GBK、UTF-8/UTF8、ANSI、unicode的学习笔记
- 看到两个写的很好的关于字符集,编码的文章,推荐大家看看,另外纠正了一下原文中的小bug(UTF-8 UniCode UTF-16 UCS 等)
- 关于编码ansi、GB2312、unicode与utf-8的区别
- [转] 关于硬盘修复以及低级格式化的一些文章
- 关于编码ansi、GB2312、unicode与utf-8的区别
- 关于ANSI,unicode与utf-8的区别
- ASCII,Unicode,UTF-8,GB2312一些关于编码的理解
- 一篇关于Unicode编码的UCS、UTF、BMP、BOM等概念的不错的文章
- 关于编码ansi、GB2312、unicode与utf-8的区别
- 关于ANSI,unicode与utf-8的区别
- 关于编码ansi、GB2312、unicode与utf-8的区别(带源码下载)
- 关于编码ansi、GB2312、unicode与utf-8的区别
- 这篇文章挺有意思 关于如何自学web前端以及一些面试的经验分享
- 关于Unicode&UTF-8&ANSI的相互转换(Ver1.1)
- 关于UTF-8、GBK编码以及编译时charset的指定的一些总结
- 关于编码:ANSI, GBK, GB2312, UTF-8, GB18030, UNICODE