zoukankan      html  css  js  c++  java
  • 被坑死了的中文乱码

             近期在调试一个接口。然后,就被中文乱码给坑了。

         事情的经过是这种,领导让我跟其它server的接口进行对接,简单点就是我这边暴露一个http的请求地址给对方,然后对方发请求到我这边。

    然后,对方请求时,使用的是GBK编码的GET请求。然后,中文到我这边就乱码了。

         最初,我这边的tomcat使用的是UTF-8编码。

    然后,接到对方请求后。怎么转都转只是来中文。当初不想改tomcat的配置。我就将(GBK、UTF-8、GB2312、ios-8895-1)这四种编码来回转啊!怎么就转只是来。

         后来,没办法。那就仅仅能改我这边tomcat的编码了。

    server.xml里面的URIEncoding设置成了GBK编码的格式

    然后我就欢天喜地的去找对方调试,并信誓旦旦的说没问题了。可是。请求过来以后,悲剧又来了。还是没有转过来。还是继续乱码。当时跳楼的心都有了(公司是6楼。摔得可疼)。

         然后。接下来就是继续找资料,查方法。

    最后,就把问题的解决点放在了Struts2的国际化,默认编码格式了。Struts2的核心包里面有一个default.properties文件,里面有一个struts.i18n.encoding=UTF-8的设置。也就是说。Struts2默认,UTF-8。

    悲了个剧的,接下来就是要把这个默认的更改过来。

    详细的更改方法有两种:

          第一。直接用压缩软件打开你的struts核心包。然后找到default.properties文件,将里面的配置改了。

    可是这种方法不够灵活,由于假设想换其它的格式就悲了个剧了。

          第二。在classpath下。添加一个配置文件struts.properties。在这个文件中面你能够设置非常多配置来覆盖struts的默认配置。这个也是最灵活的改动

          然后,接下来两个配置都改了,兴奋的去接收请求,还是会有乱码。然后,有研究了一番。终于接收GBK格式的GET请求的接收方法例如以下:

             URLDecoder.decode(httpServletRequest.getParameter("param"), "GBK");

             可是。问题又来了。UTF编码格式的有乱码了。继续研究。然后针对UTF-8的接收是这种,

            String param = URLEncoder.encode(httpServletRequest.getParameter("param", "GBK");

            String utpParam = URLDecoder.decode(param , "UTF-8");

            最后,总结。上面标红的是须要改动内容。因为我这边的系统,是能够明白知道是什么类型什么编码请求过来,所以我做了一个配置,对于不同的请求使用不同的參数获取方法。可是。对于一些系统。不知道请求的详细格式。

    我这样的方法就不适用。所以。这个后期还是须要继续优化研究的。假设,哪位大神有好的解决方法,也请多多喷水告知。在下细听便是。


  • 相关阅读:
    PAT (Advanced Level) 1060. Are They Equal (25)
    PAT (Advanced Level) 1059. Prime Factors (25)
    PAT (Advanced Level) 1058. A+B in Hogwarts (20)
    PAT (Advanced Level) 1057. Stack (30)
    PAT (Advanced Level) 1056. Mice and Rice (25)
    PAT (Advanced Level) 1055. The World's Richest (25)
    PAT (Advanced Level) 1054. The Dominant Color (20)
    PAT (Advanced Level) 1053. Path of Equal Weight (30)
    PAT (Advanced Level) 1052. Linked List Sorting (25)
    PAT (Advanced Level) 1051. Pop Sequence (25)
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/5118534.html
Copyright © 2011-2022 走看看