今天同事在做一个手机网站的后台,用GET方式提交参数时,碰到了中文乱码的问题,Tomcat服务器和页面都设置了编码方式是UTF-8,也用了过滤器,还是出现乱码。
无奈只有用java API的两个类来进行编码与解码,URLEncoder:HTML格式编码的工具类,它能将String转换成
application/x-www-form-urlencoded MIME格式;URLDecoder:HTML格式解码的工具类,它能将String从
application/x-www-form-urlencoded MIME格式解码。
由于页面是采用velocity页面模板技术做的,所以需要在页面对传递的中文参数进行编码。
先写一个工具类:ChineseHandler
public class ChineseHandler {
//将字符窜编码
public static String getAfterEncodedContent(String content) {
String newContent = "";
try {
newContent = URLEncoder.encode(content, "UTF-8");
} catch(UnsupportedEncodingException e) {
newContent = "";
}
return newContent;
}
//将编码后的字符窜解码
public static String getAfterDecodedContent(String content) {
String newContent = "";
try {
newContent = URLDecoder.decode(content, "UTF-8");
} catch(UnsupportedEncodingException e) {
newContent = "";
}
return newContent;
}
}
然后写一个配置文件:暂时命名为toolbox.xml
<?xml version="1.0" encoding="UTF-8"?>
<toolbox>
<xhtml>true</xhtml>
<tool>
<key>chineseHandler</key>
<scope>application</scope>
<class>com.association.util.ChineseHandler</class>
</tool>
</toolbox>
再然后再web.xml文件中作velocity的配置:
<!-- velocity -->
<servlet>
<servlet-name>velocity</servlet-name>
<servlet-class>
org.apache.velocity.tools.view.servlet.VelocityViewServlet
</servlet-class>
<!--这里初始化上面的配置文件,这样我们在velocity的页面中就可以直接使用我们开始定义的编码解码工具类(ChineseHandler)了,-->
<init-param>
<param-name>org.apache.velocity.toolbox</param-name>
<param-value>/WEB-INF/toolbox.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>velocity</servlet-name>
<url-pattern>*.vm</url-pattern>
</servlet-mapping>
这样,我们在velocity的页面中就可以这样使用了:
<a href="xxxxxxxxxxxx?keyword=$!chineseHandler.getAfterEncodedContent('中文你好')" />
这时,你的浏览器地址栏上是不是显示了提交的路径和一串%和字母,这样既看不到提交的具体内容,
也很好地解决了中文乱码问题,这时在后台(Servlet或Strust)获得提交的字符窜参数,再调用上面
的工具类的getAfterDecodedContent方法,把字符窜解码,这样就OK了。
如果你的页面是JSP,那更好办,直接
<a href="xxxxxxxxxxxx?keyword=<% java.net.URLEncoder.encode('中文你好', 'UTF-8')" %> />
分享到:
相关推荐
tomcat get提交中文乱码解决方案,修改tomcat server.xml 中以下为
参看文档:http://blog.csdn.net/sinat_29398599/article/details/52880036
关于StrutsPrepareAndExecuteFilter最新的过滤器,在Struts.xml定义常量无法解决post方式提交中文乱码问题。 关于Struts2各个版本、各种过滤器,用get方式提交都方法都无法解决的中文乱码问题。
get提交中文乱码 地址重写中文乱码 jsp url中文乱码四种解决方式
JSP中文乱码问题综述,中文乱码解决大全,表单使用Post方式提交后接收到的乱码问题,表单get提交方式的乱码处理方式,上传文件时的乱码解决,Java代码关于url请求,接受参数的乱码,关于jsp在MyEclipse中打开的乱码问题,...
今天终于解决了AJAX的中文乱码问题,写篇文章来帮助一下有同样问题的朋友们。我的开发环境:XP, eclipse,使用GB18030编码。 当遇到这个问题时,到网上去查了好多文章,提到几种解决方案,如:全站UTF-8编码;请求头...
中文乱码过滤器,可以解决GET提交,以及POST提交的中文乱码问题。引入该过滤器,其它任何地方都将不需要再转码。
主要解决表单提交中文乱码问题,主要针对页面GET提交的处理编码问题,设计知识 过滤器,servlet,装饰设计模式等
这是github上下载下来,然后修改的,没提交到github上,大家下载后解压出来的那个dll是编译后,的,源码自己编译也可以,编译...之前发了一个,那个是没只改了乱码问题,没有修改指定参数别名的,以后大家下载这个新的
解决办法 1、在后台获取时采用 String b = new String(request.getParameter("name").getBytes("iso-8859... 在前台处理汉字 java.net.URLEncoder.ecode("中文","GBK");//前面是要处理的中文字符 eg: win
(2)用过滤器解决request中文乱码问题。 (3)代码如下: package my; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ChineseFilter implements Filter { //定义了一个...
这里主要针对java web项目中的文乱码问题。 从浏览器采用form方式提交数据到服务器,可以分为post和get方法。 1,post方法: 在jsp页面中的page指令中,有一个pageEncoding,这个指令表示jsp翻译成servlet...
本文为大家分享了JSP用过滤器解决request中文乱码问题,具体内容如下 (1)客户端的数据一般是通过HTTP GET/POST方式提交给服务器,在服务器端用request.getParameter() 读取参数时,很容易出现中文乱码现象。 (2...
2、在FTP设置中找到OPTS UTF8命令,右击禁用此命令。... 4、在出来的FTP命令属性选项卡... 您可能感兴趣的文章:php中json_encode UTF-8中文乱码的更好解决方法java中form以post、get方式提交数据中文乱码问题总结pyth
本文实例讲述了Android编程向服务器发送请求时出现中文乱码问题的解决方法。分享给大家供大家参考,具体如下: 我们在andorid项目中通过get方式向服务器发送请求,其中url参数带有中文,将会产生乱码,乱码产生的...
Android Retrofit 中文乱码问题的解决办法 使用retrofit和rxjava,提交数据时需注意,当数据中有中文时,传到后台,可能会是乱码,需处理: 解决: 1.GET请求改成POST; 2.参数Field改成Query 3.加上@...
post 方式提交时,若数据中含有中文,则服务端获得的数据中文部分会变为乱码 原因: 可能是提交时 XMLHttpRequest 自动对非标准 ASCII 字符进行了编码。 可能只是简单的逸码转换,但具体编码方式不详, 在服务端就...
在android开发中我们常常遇到与到乱码问题,遇到乱码问题首先我们要先检查两端编码格式是否一致! 一般我们提交数据用get 和post方法,这两种方法在上传中有con.setRequestProperty(Charset, UTF-8); 和...
以前在新浪博客写过js调用AJAX时Get和post的乱码解决办法,但是使用js代码比较繁琐,我们在使用ajax进行数据交互时可以使用js的一个成熟框架—jQuery。 一个网站的设计,不管是注册登录还是分页查找,都需要提交参数...
自己验证了下,果然如此,而且比对两边GET提交的参数,除了有个字段的值不同外,参数个数这些都是相同的,故考虑有可能是编码问题造成的影响。 分别打开两个文件后查看,发现两边编码确实不一致,而服务器那边为GB...