血与泪的教训: 中文乱码问题整合(Java)

来源:互联网 发布:网络安全措施 编辑:程序博客网 时间:2024/05/16 06:39

中文的字符编码集有:GB2312,GB18030,UTF-8(适用于中文,但偶尔会出错,前面两个比较有保障)



  • Html页面乱码问题
    • 在<head>标签中设置<meta charset="GB18030">或 <meta content="text/html;charset=GB18030">
    • 如图(任选一种,图片只为展示)
    • 修改html文件编码格式
    • 查看是否使用了springmvc+freemaker,若使用了这两者,请往下看。

  • 后端接受的String类型参数乱码问题(假定接受的String变量名为oldString)
    • 一般传到后端的编码为ISO-8859-1,所以可用String类转换(下面两种转换请分别测试)
    • String newString = new String(oldString.getByte(“ISO-8859-1”),"GB2312");
    • String newString = new String(oldString.getByte("ISO-8859-1"),"UTF-8");
    • 设置Filter,在Filter的doChain方法中加入 request.setCharacterEncoding("UTF-8") 或 request.setCharacterEncoding("GB2312");
    • 终极无奈狗屎方法:将所有需要传到后端的String提前用md5加密转换为纯英文数字!!去他的中文问题!!!!(如下载文件路径,传过来的中文一定是ISO-8859-1编码的乱码,那么在上传文件的时候,直接将文件名md5加密再放到数据库中即可)



  • JS alert confirm 中文乱码问题
    • 修改js文件编码格式~!!!!!!!!!!(具体百度 eclipse修改js文件编码)
    • 导入js文件时设置charset: <script src="xxxx" charset="GB2312"></script> 注:charset中的值应与js文件编码一致!!!
  • Servlet收到的Request的Param(即请求参数)乱码问题,需设置Request的Charset
    • request.setCharacterEncoding("GB2312");
    • out.println()乱码以及response同理,需设置 response.setCharacterEncoding("GB2312")
  • JSP页面中文乱码问题
    • 配置page属性:<%@ page pageEncoding="GB2312"%>
  • Springmvc采用freemaker中文乱码问题
    • 页面编码设置<meta name="content-type" content="text/html;charset=GB2312"> 或<meta charset="GB2312">
    • spring配置文件中需设置好freemaker的默认编码:<bean id="FreeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/"></property>
<property name="defaultEncoding" value="GB2312"></property>
</bean>
<bean id="FreeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="suffix" value=".html"></property>
<property name="contentType" value="text/html;charset=GB2312"></property>
</bean>


原创粉丝点击