- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何判断一个文本文件内容的编码格式并修改?UTF-8???ANSI(GBK)
?(2012-07-20 18:10:57)
转载▼
分类:? \t /s/_blank Cstyle
windows下的notepad另存为选项有关于编码的选择,ANSI、Unicode、Unicode big endian、UTF-8四种选择编码方式。其中ANSI是与你使用的windows操作系统的语言有关系的,向windows 7 简体中文版就是GBK(用一个字节表示英文,用两个字节表示一个中文)。第二个选项Unicode其实是指Unicode16?little?endian 。 第四个选项UTF-8大家都知道吧。但是有一个要注意的地方是,微软在windows平台下用自带的notepad.exe生成UTF-8编码的文本文件时会在文件开头加入三个字节的BOM(byte order mark)EF BB BF,这样就通过有无BOM区别文本的编码是ANSI(GBK)还是UTF-8。
但是了,UTF-8也可以不要这三个字节的BOM,像用php的GD库生成图片时,如果有了BOM就会出错。而且在windows平台上,用notepad打开一个没有BOM的文本文件,也能正常显示,而不会当做ANSI(GBK)来处理。但是有这样的一个趣事,就是在notepad中输入“联通”两个中文,保存到本地,再打开,会发现乱码。这是为什么呢?
这个就设计到notepad判断文本编码的原理了。(这个原理是根据实验结果推测的,本人不保证其绝对与微软的思路一致)
notepad打开一个文本,有BOM这很容易判断是UTF系列编码,因为UTF-8,UTF-16 big endian, UTF-16 little endian ,UTF-32 big endian, UTF-32 little endian 的BOM都不一样。但是如果文本没有BOM,又不能立刻判定其为ANSI(GBK)编码,因为也有可能是无BOM的UTF-8。所以notepad会根据UTF-8的编码原理推测编码
?
UCS-4编码????????????????UTF-8字节流U– U+0000007F????0xxxxxxxU– U+000007FF????110xxxxx 10xxxxxxU– U+0000FFFF????1110xxxx 10xxxxxx 10xxxxxxU– U+001FFFFF????11110xxx 10xxxxxx 10xxxxxx 10xxxxxx……
比如中文都是用三个字节表示,若无BOM,则从文本第一个字节开始,按照UTF-8的编码规则去验证字符编码,例如:
第一个字节的第一个bit为0,说明是个ANSII字符,继续查看第二个比特,若第一个比特是1,则查看第二个比特,若第二个比特为0,说明这不是一个UTF-8编码的文本。依次类推,若一旦有一个bit不满足UTF-8编码要求,就判定文本为ANSI(GBK),若知道文本结束都不能判定,则说明文本是UTF-8编码的。所以现在我们就能明白为什么在notepad中“联通”会乱码了。notepad中文本默认按ANSI(GBK)保存,没有BOM,打开时notepad会判断其编码,巧合的是联通的ANSI(GBK)编码为 C1 AA CD A8这正好也是两个UTF-8编码的文字,当然这不是中文啦。所以notepad会认为这是一个UTF-8编码的文本,会安装UTF-8的格式来解析字符,于是乱码了。
知道了原理,我们就可以编写判断文本编码的软件了。这里我就不贴代码了。
文件编码,文件或文件名编码格式转换
?(7193)??(1)
如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题。Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8。下面介绍一下,在Linux中如何查看文件的编码及如何进行对文件进行编码转换。
一,查看文件编码:在Linux中查看文件编码可以通过以下几种方式:1.在Vim中可以直接查看文件编码:set fileencoding即可显示文件编码格式。如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在~/.vimrc 文件中添加以下内容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照fileencod
您可能关注的文档
- 汽车营销策划第二章概要.pptx
- 契约型私募股权投资基金运营模式比较研究.docx
- 千斤顶设计手册概要.docx
- 千人火锅宴活动方案概要.pptx
- 千字文全文PPT概要.pptx
- 浅论新闻报道传播的“正能量”和“负能量”.docx
- 浅谈安乐死合法化的必要性.doc
- 浅谈俄罗斯文化中的传统音乐.docx
- 浅谈汉字与中国古代服饰文化.docx
- 浅谈酒与唐诗.docx
- GB/T 46622.1-2025液压传动 螺纹插装阀安装连接尺寸 第1部分:米制螺纹.pdf
- 《GB/T 46622.1-2025液压传动 螺纹插装阀安装连接尺寸 第1部分:米制螺纹》.pdf
- 2025重庆渝海物业管理有限责任公司外包岗位招聘7人备考题库最新.docx
- 岳池县兴隆镇公开招聘社区网格员的备考题库最新.docx
- 2025湖南怀化市靖州县纪委监委选调11人备考题库最新.docx
- 2025年镇原县科技局下属事业单位招聘笔试参考题库附答案.docx
- 贵州国企招聘:2025中国人民财产保险股份有限公司贵州省分公笔试参考题库附答案.docx
- 2025年武汉铁路局集团招聘(180人)笔试参考题库最新.docx
- 2025重庆市应急管理局遴选公务员7人备考题库附答案.docx
- 赣州市人力资源有限公司公开招聘劳务派遣制工作人员备考题库附答案.docx
原创力文档


文档评论(0)