java乱码问题

1、关于配置Tomcat的URIEncoding
问题:程序需要发送http GET请求到服务器,请求的参数中包含了中文字符。程序中参数为UTF-8格式,且经过了UTF-8 URL编码再发送。使用的tomcat服务器,但服务器端后台程序中取到的参数的中文是乱码。
解决方法:修改Tomcat的Server.xml,在Connector标签中加上URLEncoding参数。
内容:
1.<Connector port="8080" maxThreads="150" minSpareThreads="25"
2.maxSpareThreads="75" enableLookups="false" redirectPort="8443"
3.acceptCount="100" debug="99" connectionTimeout="20000"
4.disableUploadTimeout="true" URIEncoding="UTF-8"/>
2、http请求乱码问题。
post请求出现乱码:
解决方法:在servlet页面添加
response.setCharcacterEncoding("utf-8")
get请求出现乱码:
解决方法:在后台获取字符串后对编码进行转化,如常见的编码ISO-8859-1,代码如下
1.String name = request.getParameter("name");
2.name=new String(name.getBytes("ISO-8859-1","utf-8"))          
3、Html中文乱码。
问题:htmll出现乱码的主要原因是html源代码内中文字内容与html编码不同造成。网页的编码是gbk,而中文的是utf-8;
解决方法:在页面顶部<head>......</head>中加上以下代码
1.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4、jsp页面出现乱码。
问题:开发人员开发jsp应该拥有良好的编码意识,jsp顶部应该首先明确编码是什么?
解决方法:在页面顶部加上以下语句
1.<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
5.java与数据库之间的乱码
直接使用unicode与数据库进行交互,可以在驱动的url中指定,如mysql驱动:
Jdbc:mysql://localhost/SRC?useUnicode=true&characterEncoding=GBK
6.解决乱码问题的注意事项
1.一个新的系统,从页面到数据库再到配置文件,建议统一使用UTF-8
2.setCharacterEncodingFilter只对post请求有效,get一律忽略
3. JavaScript和Ajax乱码的避免,注意JavaScript默认是ISO8859的编码,避免JS/AJAX乱码和GET一样,不要在 URL里面使用中文,实在避免不了,就只能在生成链接的时候转码,绝对不能想当然的认为SetCharacterEncodingFilter会帮你做什 么事情。
4. 如果在本项目中采用了get方式提交请求并附加参数,结果导致编码乱码,原因是Tomcat默认请求编码是ISO8859,需要在Tomcat的配置文件 server.xml添加一个参数,URIEncoding=”UTF-8”,这样请求中附件的参数就会以UTF-8来进行编码。
5.Ajax请求乱码 使用Ajax,JS也是默认使用ISO8859编码,所以在进行请求时遇到中文参数需要进行编码,如:var url = "GetSelectListAction.do?queryData=subTrade" + "&queryId=" + encodeURI(obj.value) + "&r=" + Math.random();这里有两个地方需要注意:第一个地方是encodeURI(),方法,可以将参数进行转码,默认是转化为UTF-8,如果需要转为其他码制,需要在方法中添加第二个参数。第二个地方是Math.random(),由于Ajax有缓存机制,在接受请求的时候第一时间先判断该请求的地址是否被访问过,如果被访问过则 直接使用缓存中的内容返回,这个东西很讨厌,客户在访问过一次出错后以后每次出现的都是这个错误,所以在请求中给其增加一个时间戳,只要可以随机生成一个 不同的字串就可以,保证Ajax每次都去访问服务器。
7.超长汉字Get乱码
超长的汉字做为参数传递仍然会出现乱码问题,解决方法是采用java.net.URLEncoder的 Encode方法强制转码:
<a href="TestAction.do?name=<%= java.net.URLEncoder.encode("你好","UTF-8")%>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值