关于Tomcat的URIEncoding以及GET乱码
来源:互联网 发布:js设置div宽度和高度 编辑:程序博客网 时间:2024/05/17 02:23
最近在维护着Linux上的服务器,当然,开发和前期测试是在windows上执行的。
在做意见反馈的时候,出现了windows上正常,Linux下却是乱码的问题。
先排查了web服务器与mysql的连接,确认问题处在前端页面和web之间的乱码交互。
前端的代码如下:是jQuery的跨域提交。
$(function(){//var $btn_green = $(".btn_green");var $content = $(":input[name=content]");var $nickname = $(":input[name=nickname]");var $linktel = $(":input[name=linktel]");//$btn_green.click(function(){//var content = $content.val();var nickname = $nickname.val();var linktel = $linktel.val();//if(!content){show("亲,请填写内容哦!");$content.focus();return false;}//var url = "http://dev3.mywebsite.com:80/api/feedback?";url += "content="+encodeURIComponent(content);url += "&nickname="+encodeURIComponent(nickname);url += "&linktel="+encodeURIComponent(linktel);try{$.getScript(url);} catch(e){//}close_feedback();$content.val("");//show("感谢您的建议与反馈!");});//function show(message){if(message){alert(message);}};});
// 请求的编码request.setCharacterEncoding("UTF-8");String content = request.getParameter("content");String clientIp = request.getRemoteAddr();String nickName = request.getParameter("nickname");String linkTel = request.getParameter("linktel");// 打印其中一个内容System.out.println("content="+content);
发现在windows上是正常的,而linux服务器里面就是乱码。
于是在Servlet加上转码,linux好了,而windows又出现乱码了。
String srcChar = "ISO8859-1";String dstChar = "UTF-8";title = new String(title.getBytes(srcChar),dstChar);content = new String(content.getBytes(srcChar),dstChar);nickName = new String(nickName.getBytes(srcChar),dstChar);linkAddress = new String(linkAddress.getBytes(srcChar),dstChar);//
确定问题应该处在Tomcat的配置上,于是翻开两个conf/server.xml 对比,发现:
<!-- windows --><Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> <Connector port="8099" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />
而Linux 的配置缺少了URIEncoding的配置项,那么默认应该是"ISO8859-1",所以如果没有配置,则需要转码一次。
<!-- Linux 上Tomcat--> <Service name="Catalina"> <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="250" minSpareThreads="20"/> <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla,traviata"compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,application/json,application/javascript,application/x-javascript"/> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" executor="tomcatThreadPool"/>
同理,如果在Linux上的Tomcat 加上URIEncoding="UTF-8" 就好了。
结论: 约定很重要,网站一般采用UTF-8作为默认编码。如果不是特殊需求,不要变换成其他编码。
- 关于Tomcat的URIEncoding以及GET乱码
- 关于Tomcat的URIEncoding以及GET乱码
- 关于Tomcat的URIEncoding以及GET乱码
- 关于Tomcat的URIEncoding以及GET乱码
- 关于Tomcat的URIEncoding以及GET乱码
- 关于Tomcat的URIEncoding以及GET乱码
- jsp中img标签路径不能包含中文,关于Tomcat的URIEncoding以及GET乱码
- 关于配置Tomcat的URIEncoding
- 关于配置Tomcat的URIEncoding
- 关于配置Tomcat的URIEncoding
- tomcat get post 乱码解决办法URIEncoding="UTF-8"
- 乱码----- tomcat 设置URIEncoding=utf-8?
- Tomcat中文乱码处理:URIEncoding,useBodyEncodingForURI
- tomcat的URIEncoding的作用
- tomcat的URIEncoding的作用
- tomcat的URIEncoding的作用
- tomcat的URIEncoding的作用
- tomcat的URIEncoding的作用
- 算法模板-PID
- 【adb】android中The connection to adb is down,问题和解决
- 丑数
- 获取登陆的ip
- Servlet是如何实现MVC的
- 关于Tomcat的URIEncoding以及GET乱码
- ANDRIOD GLOSSARY
- 浅谈HTTP中get与Post的区别
- HackerRank Algorithms-Search-Flowers 贪心
- 关于IIS的IWAM_和IUSR_用户的密码
- 【.R】Android R.java文件丢失的找回
- 美国面试之旅——面试经验分享(ZZ)
- Android 百度地图开发(一)---申请API Key和在项目中显示百度地图
- Android开发:检测耳机的插入状态