`
bh三少
  • 浏览: 100936 次
  • 性别: Icon_minigender_1
  • 来自: 北海
社区版块
存档分类
最新评论

解决GET提交中文乱码问题

阅读更多

今天同事在做一个手机网站的后台,用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')" %> />
0
0
分享到:
评论

相关推荐

    tomcat get提交中文乱码解决方案

    tomcat get提交中文乱码解决方案,修改tomcat server.xml 中以下为

    解决了中文乱码的http的get和post请求demo

    参看文档:http://blog.csdn.net/sinat_29398599/article/details/52880036

    Struts2中文乱码问题最终解决方案

    关于StrutsPrepareAndExecuteFilter最新的过滤器,在Struts.xml定义常量无法解决post方式提交中文乱码问题。 关于Struts2各个版本、各种过滤器,用get方式提交都方法都无法解决的中文乱码问题。

    jsp url中文乱码四种解决方式

    get提交中文乱码 地址重写中文乱码 jsp url中文乱码四种解决方式

    JSP中文乱码问题综述,中文乱码解决大全

    JSP中文乱码问题综述,中文乱码解决大全,表单使用Post方式提交后接收到的乱码问题,表单get提交方式的乱码处理方式,上传文件时的乱码解决,Java代码关于url请求,接受参数的乱码,关于jsp在MyEclipse中打开的乱码问题,...

    ajax中文乱码如何解决

    今天终于解决了AJAX的中文乱码问题,写篇文章来帮助一下有同样问题的朋友们。我的开发环境:XP, eclipse,使用GB18030编码。 当遇到这个问题时,到网上去查了好多文章,提到几种解决方案,如:全站UTF-8编码;请求头...

    中文乱码过滤器(包括GET和POST)

    中文乱码过滤器,可以解决GET提交,以及POST提交的中文乱码问题。引入该过滤器,其它任何地方都将不需要再转码。

    java过滤器中文乱码POST和GET

    主要解决表单提交中文乱码问题,主要针对页面GET提交的处理编码问题,设计知识 过滤器,servlet,装饰设计模式等

    RestSharp 组件 修改接口返回中文乱码、指定属性的参数别名问题

    这是github上下载下来,然后修改的,没提交到github上,大家下载后解压出来的那个dll是编译后,的,源码自己编译也可以,编译...之前发了一个,那个是没只改了乱码问题,没有修改指定参数别名的,以后大家下载这个新的

    Java get 提交乱码处理方法

    解决办法  1、在后台获取时采用  String b = new String(request.getParameter("name").getBytes("iso-8859...  在前台处理汉字 java.net.URLEncoder.ecode("中文","GBK");//前面是要处理的中文字符  eg: win

    JSP用过滤器解决request getParameter中文乱码问题

    (2)用过滤器解决request中文乱码问题。 (3)代码如下: package my; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ChineseFilter implements Filter { //定义了一个...

    做Java项目过程中遇到乱码问题的解决方案

    这里主要针对java web项目中的文乱码问题。  从浏览器采用form方式提交数据到服务器,可以分为post和get方法。  1,post方法:  在jsp页面中的page指令中,有一个pageEncoding,这个指令表示jsp翻译成servlet...

    JSP利用过滤器解决request中文乱码问题

    本文为大家分享了JSP用过滤器解决request中文乱码问题,具体内容如下 (1)客户端的数据一般是通过HTTP GET/POST方式提交给服务器,在服务器端用request.getParameter() 读取参数时,很容易出现中文乱码现象。 (2...

    Serv-U 8.0 服务器中文乱码问题的解决

     2、在FTP设置中找到OPTS UTF8命令,右击禁用此命令。... 4、在出来的FTP命令属性选项卡... 您可能感兴趣的文章:php中json_encode UTF-8中文乱码的更好解决方法java中form以post、get方式提交数据中文乱码问题总结pyth

    Android编程向服务器发送请求时出现中文乱码问题的解决方法

    本文实例讲述了Android编程向服务器发送请求时出现中文乱码问题的解决方法。分享给大家供大家参考,具体如下: 我们在andorid项目中通过get方式向服务器发送请求,其中url参数带有中文,将会产生乱码,乱码产生的...

    Android Retrofit 中文乱码问题的解决办法

    Android Retrofit 中文乱码问题的解决办法 使用retrofit和rxjava,提交数据时需注意,当数据中有中文时,传到后台,可能会是乱码,需处理: 解决: 1.GET请求改成POST; 2.参数Field改成Query 3.加上@...

    js与ASP.NET 中文乱码问题

    post 方式提交时,若数据中含有中文,则服务端获得的数据中文部分会变为乱码 原因: 可能是提交时 XMLHttpRequest 自动对非标准 ASCII 字符进行了编码。 可能只是简单的逸码转换,但具体编码方式不详, 在服务端就...

    android和服务器的URLEncodedUtils乱码编码问题的解决方案

    在android开发中我们常常遇到与到乱码问题,遇到乱码问题首先我们要先检查两端编码格式是否一致! 一般我们提交数据用get 和post方法,这两种方法在上传中有con.setRequestProperty(Charset, UTF-8); 和...

    jQuery调用AJAX时Get和post公用的乱码解决方法实例说明

    以前在新浪博客写过js调用AJAX时Get和post的乱码解决办法,但是使用js代码比较繁琐,我们在使用ajax进行数据交互时可以使用js的一个成熟框架—jQuery。 一个网站的设计,不管是注册登录还是分页查找,都需要提交参数...

    不同编码的页面表单数据乱码问题解决方法

    自己验证了下,果然如此,而且比对两边GET提交的参数,除了有个字段的值不同外,参数个数这些都是相同的,故考虑有可能是编码问题造成的影响。 分别打开两个文件后查看,发现两边编码确实不一致,而服务器那边为GB...

Global site tag (gtag.js) - Google Analytics