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编码比较复杂,建议多看看相关的知识
相关文章推荐
- PHP中转换编码问题 GBK/UTF-8等
- PHP转换编码问题GBK/UTF-8
- 解决中文字符乱码问题,如何将gbk格式转换utf-8格式
- PHP转换编码问题GBK/UTF-8
- 解决UTF-8和GBK之间转换乱码问题
- 有关编码(GBK、utf-8、iso8859-1、)相互转换问题
- 字符编码和python使用encode,decode转换utf-8, gbk, gb2312的问题
- 如何使用Java代码将GBK编码格式的工程转换为UTF-8编码格式的工程
- 再谈java乱码:GBK和UTF-8互转尾部乱码问题分析
- c语言中关于utf-8编码转换为gb2312的问题
- oracle编码格式从utf-8转换为GBK
- 把GBK编码的源代码转换成Utf-8编码的小程序
- vc中gbk到utf-8的相互转换
- 乱码问题(2):如何把原有数据库的GBK作内码的数据转成UTF-8?
- coco2d-x中编码问题。GBK转UTF-8
- utf-8转换GB3212或GBK
- JAVA字符编码系列二:Unicode,ISO-8859,GBK,UTF-8编码及相互转换
- unicode中的‘\xa0’字符在转换成gbk编码时会出现问题,gbk无法转换'\xa0'字符。
- Unicode,ISO-8859,GBK,UTF-8编码及相互转换
- dedecms网站GBK与UTF-8相互之间怎么转换