首先考虑数据库、xml配置、jsp页面等的字符集charset是否统一。在字符集统一的情况下,各种中文乱码可能出现的原因。
Web页面乱码
1、response的ContentType属性
比如可以在jsp页面中直接设置
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>在<head>标签中添加
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">还比如
在Controller中直接使用 response.getWriter().write(jsonArray.toString()); 乱码 需要加上 response.setContentType("text/html;charset=utf-8");response.setContentType()的作用是使客户端浏览器,区分不同种类的数据,并根据不
同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。 例如:web浏览器就是通过MIME类型来判断文件是GIF图片,通过MIME类型来处理json字符串。 Tomcat的安装目录\conf\web.xml 中就定义了大量MIME类型 ,可以参考。 response.setContentType(“text/html; charset=utf-8”); html response.setContentType(“text/plain; charset=utf-8”); 文本 esponse.setContentType(“text/javascript; charset=utf-8”); json数据 response.setContentType(“application/xml; charset=utf-8”); xml数据
2、xml配置encoding
SpringMVC配置视图解析器编码
web.xml中配置过滤器
CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true
3、是否是JS导致了乱码
看看有没有字符集charset的地方,与代码中的不一致也可以直接给js添加字符集
<script type="text/javascript" language="javascript" src="scripts/function.js" charset="gb2312"></script>
读取properties文件乱码
在流的转换中常常出现中文乱码,解决办法:
1、在读的时候注意添加字符集BufferedReader bf = new BufferedReader(new InputStreamReader(is, "UTF-8"));
InputStream is = resource.getInputStream();try { BufferedReader bf = new BufferedReader(new InputStreamReader(is, "UTF-8")); props.load(bf);} finally { s.close();}
2、先转换成byte[]数组,再转换成String
打印到PDF字体乱码
服务器上没有对应的字体
原创文章,欢迎转载,转载请注明出处!