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

简介:



本文转自 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 的中文网站,仍旧会使乱码一团。这是一个历史原因,在将来的某个时刻,或许会被最终解决。
目录
相关文章
|
域名解析 移动开发 负载均衡
阿里云DNS常见问题之DNS负载均衡调加权模式失败如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
SQL 安全 前端开发
详解开源数据库审计平台Yearning
详解开源数据库审计平台Yearning
12203 2
|
安全 Java 开发者
Java中的Path类使用详解及最佳实践
Java中的Path类使用详解及最佳实践
【已解决】ZooKeeper配置中出现Error contacting service. It is probably not running
【已解决】ZooKeeper配置中出现Error contacting service. It is probably not running
750 1
|
Java Spring
Spring中循环依赖解决方案
Spring中循环依赖解决方案
|
JSON 前端开发 JavaScript
Layui动态树详解
Layui动态树详解
276 0
|
SQL 算法 搜索推荐
阿里技术号强推:慢SQL治理分享 上
阿里技术号强推:慢SQL治理分享 上
499 0
|
SQL 关系型数据库 MySQL
sql_mode中的ONLY_FULL_GROUP_BY的作用
MySQL 8中的sql_mode中的默认值如下
898 0
|
人工智能 自然语言处理 开发者
如丝般顺滑的体验:快速使用ModelScope句子相似度模型
最近坊间传闻,一大批覆盖NLP、CV、Audio等多领域的具有竞争力的SOTA模型,以及行业领先的多模态大模型,将全部免费开放下载以及使用!千呼万唤始出来,今天就带来模型即服务共享平台——ModelScope在句子相似度任务上的初体验。
|
项目管理
【系统架构】-什么是MDA架构、ADL、DSSA
【系统架构】-什么是MDA架构、ADL、DSSA
1242 0
【系统架构】-什么是MDA架构、ADL、DSSA