解决中文编码问题的四个注意点

简介:



本文转自 xhinkerx 51CTO博客,原文链接:http://blog.51cto.com/xhinker/125456,如需转载请自行联系原作者网站中如果涉及到东亚语音,比如中文,日语等,就不得牵扯到字符的编码问题,这本来是一个历史问题,到如今却成为了一个软件开发的大问题。几乎做过 B/S 开发的人都遇到过字符乱码问题。那么 UTF-8 不是支持全球所有语言吗?理论上是的,但是在中国, gb2312 GBK 等字符集已经活得了广泛的使用,而 GBK gb2312 UTF-8 的编码又是不一样的。正是因为编码的混乱,造成开发时经常会出现乱码。
        那么如果解决这个问题呢?
        要统一四方面的编码(有的人仅仅在 页面中加入一些代码就声称解决编码问题,其实根本没有解决真正的问题所在)。
        第一方面,就是开发人员在编写代码的时候所使用的编码方式,这很重要。如果在程序中使用硬编码的方式写入一些静态文本,在本机似乎看起来一切正常,可是到了另一台电脑,情况可能就完全不同了。要知道 B/S 结构的软件是面向全球的,有谁会知道对方在使用那种编码呢?比如现在一般常用的 IDE 使用的默认编码是 UTF-8 , 在软件完成之后,在另一个只支持 gb2312 的编码里有可能就是一串乱码。如果程序中涉及到中文的硬编码,最好将编辑器的字符集设置为 GBK 因为 GBK 对英文字符编码方式是兼容的,这样在国外可以看到英文,国内也可以看到中文,这种做法对于面向国内用户的网站来说是最好的做法了,如果主要是面向国外,则使用默认的 UTF-8 是最好的选择。
        第二方面,输入法的编码设置,很多人在被乱码问题弄得头晕的时候往往不会意识到自己的输入法有问题。其实中文在输入的时候,输入法肯定要选择一种字符集进行编码的,如果输入法的字符集是 UTF-8  那么只支持 GBK gb2312 的浏览器显示的肯定会是乱码,解决方式如上,将输入法的字符集设置为 GBK 以获得最好的兼容性。
        第三方面,数据库的字符编码设置,就拿 MySql 来说,在安装配置的时候, Mysql 会提示用户选择某一个特定的字符集,对于使用中文的软件来说,选择 GBK 仍旧是最好的选择。
        第四方面, java 虚拟机编译时的字符集设置,如果输入的是 GBK  而编译 JSP 使用的是 UTF-8 的话,那么一切又都乱了。所以可以在编译参数里写入
       -encoding GBK
        这样一切都是 GBK 格式,中文的现实才被解决了,当然也可以全部设置为 UTF-8 或者 GB2312  对于国内网站来说 GBK 仍旧是最佳选择。但不管选择哪种方式,一定要让这四个方面的编码方式保持一致,否则乱码随时都有可能出现。
        编码问题不是一时半会所能解决的。即使以上这四个方面都做到了,在美国的用户如果使用 UTF-8 字符集的浏览器访问 GBK 的中文网站,仍旧会使乱码一团。这是一个历史原因,在将来的某个时刻,或许会被最终解决。
目录
相关文章
|
7月前
|
存储 网络协议 安全
字符编码技术专题(一):快速理解ASCII、Unicode、GBK和UTF-8
今天中午,我突然想搞清楚 Unicode 和 UTF-8 之间的关系,就开始查资料。 这个问题比我想象的复杂,午饭后一直看到晚上9点,才算初步搞清楚。 下面就是我的总结,主要用来整理自己的思路。我尽量写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的*石,对于程序员来说尤其重要,字符编码的知识是必须要懂的。
35 0
|
9月前
|
存储 Java 关系型数据库
【精炼易懂】字符集、编码、乱码问题、ASCII、GBK、Unicode、UTF-8详解+实例说明
【精炼易懂】字符集、编码、乱码问题、ASCII、GBK、Unicode、UTF-8详解+实例说明
4976 4
|
存储 编解码 算法
字符编码的前世今生
字符编码的前世今生
129 0
|
存储 XML SQL
字符编码与使用中的问题
作为中文环境下开发的Java程序员,UTF-8编码是我们经常使用的编码方式。 字符编码是怎么来的?为什么使用UTF-8编码?使用字符编码的时候回遇到什么坑? 这些问题你遇到过或者思考过吗。
122 0
|
存储 JavaScript 程序员
【字符编码详解】ASCII、GB2312、GBK、UTF-8、UTF-16编码与Unicode字符集
【字符编码详解】ASCII、GB2312、GBK、UTF-8、UTF-16编码与Unicode字符集
503 0
|
存储 编解码 Windows
理解字符编码
理解字符编码
理解字符编码
|
存储 自然语言处理 JavaScript
【字符编码】彻底理解字符编码
在解决昨天的问题时,又引出了很多新的问题,如为什么要进行编码,这些编码的关系如何,如ASCII,IOS-8859-1,GB2312,GBK,Unicode之间的关系,笔者想要彻底理解字符编码背后的故事,遂进行了探索,具体笔记如下。如园友能读完本篇文章,我相信会解开很多疑惑
254 0
【字符编码】彻底理解字符编码
|
存储 自然语言处理 JavaScript
【字符编码】彻底理解字符编码
 在解决昨天的问题时,又引出了很多新的问题,如为什么要进行编码,这些编码的关系如何,如ASCII,IOS-8859-1,GB2312,GBK,Unicode之间的关系,笔者想要彻底理解字符编码背后的故事,遂进行了探索,具体笔记如下。如园友能读完本篇文章,我相信会解开很多疑惑。
263 0
【字符编码】彻底理解字符编码
|
编解码 JavaScript IDE
彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)(二)
彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)
2204 0
彻底解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)(二)