几种中文乱码的解决方法

今天从许令波先生的书中学习了中文乱码的问题,现总结如下:

要想解决中文乱码问题就必须先了解导致中文乱码的原因,现总结几种原因及解决方法

js页面到java页面的中文乱码问题

js页面的字符编码类型和java服务器端的编码类型不一致导致中文乱码问题,例如js默认是UTF-8编码,服务器端中文解码一般都是GBK。

解决方法是用encodeURIComponent两次编码,如encodeURIComponent(encodeURIComponent(str)),这种解决方法的原理我还没搞清楚

先记录下来。

中文变成了看不懂的字符

1、一个汉字变成一个问号

将中文和中文符号经过不支持中文的ISO-8859-1编码后,所有字符都变成了‘?’,这是因为用iso-8859-1进行编解码时遇到不在范围内的字符会统一用3f表示

这也就是通常所说的“黑洞”。

2、一个汉字变成两个问号

这种情况比较复杂,中文经过多次编码,但其中有一次编码或者解码不对仍会出现字符变成“?” 的情况,这是要仔细看编码过程找出编码错误发地方。

3、一种不正常的中文解码

在jsp页面用request.getparameter()获取参数时中文乱码,但是采用下面方法String value=String(request.getparameter(str).getBytes("ISO-8859-1"),"GBK");

虽然最终能取得正确的汉字但还是不建议使用,因为中间多了一层编码与解码。这种情况下出现乱码是因为在tomcat的配置文件中没有将useBodyEncodingForURI的配置项设置为true

你可能感兴趣的:(几种中文乱码的解决方法)