Java解决各种中文乱码问题(1)get和post请求

来源:互联网 发布:发论文数据可以造假吗 编辑:程序博客网 时间:2024/05/02 00:21

 

作为java程序员,中文的乱码问题会经常碰到。过去的一个项目,我碰到了各种类型的java乱码问题。先分享给大家:
 
1:网页Post请求,提交后,显示提交结果,乱码。
首先确定数据库的编码方式。这里我发现,如果数据库的编码不是UTF-8,Post请求也可以保证回显正确,但是有一个地方要注意。
如html中:
(1)<input type="text" name="num" value="${person.num}"/>
这时,value中的num中文会正常显示。
 
(2)<input type="text" name="num" value="<c:out value="${person.num}">"/>
这时,value中的Num中文不会显示,显示乱码。
这是因为jstl标签库的原因。
虽然(1)代码可以显示中文,但仍然推荐数据库编码改成UTF-8
 
2:网页get请求,提交后,显示乱码。
这个问题就比较复杂了。
解决方法可以分为两步,(我们首先做了第一部,解决了大部分问题,第二步是解决特殊问题)。
我们难免使用get请求提交,如果其中有中文,那么:
 
(1)Tomcat中:
找到 server.xml 中的
    <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />
以上方法是在网上找到的,我尝试了,起不到效果,但给了我们启发,我们如下做:
URIEncoding="UTF-8"
没想到成功了。我想这应该和我的操作系统的语言有关。我们是英文系统。
 
(2)这个是我为了解决一小部分(ajax和js动态生成的html)中提交中文问题,因为以上的方法都解决不了这个问题。我找到了如下类:
  
这个类在CSDN上可是要收5个资源点的。我给大家分享了。嘿嘿,多多来捧场啊。
只有类是不够的,我们的get请求需要用js赖提交,在提交前有如下操作:
...+"&PERSON="+escape(escape(persons))+...
这时提交的URL中的一部分:persons就是可能含有中文的部分。
在代码中: Escape.unescape(request.getParameter("PERSON")  来接受这个get请求。这样,基本所有的页面请求中文问题,就解决了。
(这篇文章是我在CTO的博客中也有的,不是盗版,是一个作者。)