您的位置:首页 > 其它

gbk-转换-utf-8问题

2014-03-20 15:45 106 查看
问题一:
文件已经另存为了utf-8码,但关闭后重新打开就自动变成了ansi编码

答:
原因是该文件中没有包含任何中文字符,如果该文件有包含中文字符,将文件另存为utf-8编码后,中文字符会以3个字节的宽度来保存(要看16进制代码),这样,在第二次打开文件时,编辑器会自动将文件识别为utf-8编码。请仔细检查你的index.dwt文件是否包含有中文,没有中文的话,你打几个中文注释保证不会有问题

这里面还存在一个utf-8 bom头的问题,bom头是utf-8文件最开始的3个字节编码,其十六进制码为:EF BB BF,一般情况下编辑器通过判断文件中开头是否存在这三个字节编码,来识别此文件是UTF码或ansi码,但另外还存在一种情况是,utf-8编码文件中在保存时选择了“UTF-8 无BOM”格式(用Ultra Edit编辑器),也就是说移除了bom头三个字节,但文件中的中文是以三个字节的UTF-8编码保存的,一般的编辑器在打开文件时还是能将此文件识别为utf-8编码。但如果文件中既不含中文字符(三字节UTF-8格式编码的),也没有包含bom头标记的,用编辑器打开文件时就会识别为ansi码。

问题二:
为什么有的文件ANSI 和UTF-8两种编码格式都能正常运行呢?有的又不行必须要UTF-8,比如languages/admin里的index.php必须要UTF-8才行,不然会有乱码在后台
答:
ecshop模板 的lbi库文件默认是没有包含中文字符的也没有包含bom头,所有字符都是以ansi编码单字节保存的,所以用编辑器打开时显示的是ansi编码,UTF-8主程序解析时也不会有问题。
而/languages/zh_cn/admin/index.php文件,没有包含bom头,如果保存为ansi格式,将以2个字节表示中文字符,所以,以3个字节来识别中文的utf-8编码主程序是无法正确解析的,自动就会出现乱码情况。
utf-8编码比较复杂,建议多看看相关的知识
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: