我的JS里面
http://localhost:8888?node=encodeURI("汉字") 这里的JS 是 EXTJS框架tomcat6 设置了 <Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>JAVA代码里面 String str = new String(sss.getBytes("ISO-8859-1"),UTF-8)
这样获得的参数 str 还是乱码
谁知道什么原因,请帮忙解决下。谢谢了!
http://localhost:8888?node=encodeURI("汉字") 这里的JS 是 EXTJS框架tomcat6 设置了 <Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>JAVA代码里面 String str = new String(sss.getBytes("ISO-8859-1"),UTF-8)
这样获得的参数 str 还是乱码
谁知道什么原因,请帮忙解决下。谢谢了!
http://localhost:8888?node=encodeURI("汉字")
好像你的url有问题,你是直接在浏览器的地址栏直接这么请求的?
这样写的话node的值是encodeURI("汉字")你的意思是node="汉字"对吧。把url拼一下。url = "http://localhost:8888?node=" + encodeURI("汉字");
嗯 意思就这样。我的业务比这个复杂,这个是我手敲的。大致意思就是我已经在 JS里面对 汉字部分 encodeURI 转码了。。
但正式环境中 。TOMCAT 是用的 UTF-8 ,不允许改成GBK的,所以出问题了。期待有人能帮我解决。
tomcat 目录下 conf/server.xml文件
<Connector port="8001" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
获取的时候不要转码。直接getParameter。再不行在servlet里request.setCharacterEncoding("utf-8")。
java里获取的时候不要转码。直接getParameter
request.setCharacterEncoding("UTf-8");
response.setCharacterEncoding("UTF-8");试试
String s = new String(this.request.getParameter(name).getBytes("iso-8859-1"),"utf-8");
楼主试试看这样能解决问题不
http://blog.csdn.net/wgw335363240/archive/2010/12/06/6059489.aspx
最好不用修改tomcat的xml的方式
<c:forEach items="${fileList}" var="fileName">
<c:url value="servlet/DownloadServlet" var="link">
<c:param name="filename" value="${fileName}" />
</c:url>
<a href=${link}>${fileName}</a><br/>
</c:forEach>
使用c:url来转码servlet上用
new String(request.getParameter("filename").getBytes("ISO-8859-1"),"UTF-8");
就好了
转码两次
var url="sss.do?aa=ff搜索"+new Date().getTime();
url = encodeURI(url);
url = encodeURI(url);String aa = request.getParameter("aa");
aa = java.net.URLDecoder.decode(aa,"UTF-8");
灵活运用嘛,呵呵!