几种中文乱码的解决方法

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值