上一篇我们介绍了《
Web中文乱码——3、Webx编解码基础》。据此,当乱码发生时,我们就可以推断乱码原因并解决。
其实,只要上文中提到的各项配置都设置成了统一的编码,很多乱码问题就能够解决。相关配置包含<set-locale/>、ContextType、jetty启动参数和velocity。
除此之外,只有一种可能会发生乱码,那就是ajax请求参数乱码,有两种方案能解决这个问题。
方案1:指定请求的编码
如果不允许使用IE,那么ajax请求的参数肯定是以UTF-8编码的,因此可以直接在ajax请求url后添加_input_charset参数如下。
http://localhost:8081/myapp/myform?_input_charset=UTF-8
方案2:js进行url encode
和《 Web中文乱码——2、SpringMVC+Jetty 乱码》类似,js先对参数进行encodeURI,这能将参数中的中文转换为%**格式。接下去,没了中文也就没了乱码。在服务器端拿到参数param后进行URLDecoder.decode(param)即可。
如果各项配置中的字符集不一致,那么各种情况都可能出现乱码,具体不再展开了,可以参考《 Web中文乱码——2、SpringMVC+Jetty 乱码》自行推理。
其实,只要上文中提到的各项配置都设置成了统一的编码,很多乱码问题就能够解决。相关配置包含<set-locale/>、ContextType、jetty启动参数和velocity。
除此之外,只有一种可能会发生乱码,那就是ajax请求参数乱码,有两种方案能解决这个问题。
方案1:指定请求的编码
如果不允许使用IE,那么ajax请求的参数肯定是以UTF-8编码的,因此可以直接在ajax请求url后添加_input_charset参数如下。
http://localhost:8081/myapp/myform?_input_charset=UTF-8
方案2:js进行url encode
和《 Web中文乱码——2、SpringMVC+Jetty 乱码》类似,js先对参数进行encodeURI,这能将参数中的中文转换为%**格式。接下去,没了中文也就没了乱码。在服务器端拿到参数param后进行URLDecoder.decode(param)即可。
如果各项配置中的字符集不一致,那么各种情况都可能出现乱码,具体不再展开了,可以参考《 Web中文乱码——2、SpringMVC+Jetty 乱码》自行推理。