xml已经指定了UTF-8编码格式仍然导出中文乱码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xml已经指定了UTF-8编码格式仍然导出中文乱码相关的知识,希望对你有一定的参考价值。
TransformerFactory tFactory = TransformerFactory.newInstance();
tFactory.setAttribute("indent-number", new Integer(4));
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName))));
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);
中文仍然为乱码
生成的文档用txt打开,选择另存为,发现编码格式为ANSI,即代码中设置的UTF-8没有起作用。
springMVC中文乱码
情况:
- eclipse编码全部设置了UTF-8格式。
- 使用form表单,post方法
- springMVC框架,JavaBean传值
问题:后台取值中文乱码
解决:
- 最开始只注意到控制台中文乱码,在eclipse中设置utf-8编码格式不起作用;包括window->Preferences 和 run as 中Arguments 添加 -Dfile.encoding=UTF-8,修改了tomcat的server.xml文件,加入URIEncoding=“UTF-8”配置
- 然后debug发现后台获取的值是乱码,在业务逻辑层加入了设置,不起作用;
1 request.setCharacterEncoding("utf-8"); 2 response.setContentType("text/html;charset=utf-8");
3. 然后发现JavaBean获取到的就是乱码,在web.xml配置文件加入了过滤器设置编码格式;(这是针对post请求)
1 <filter> 2 <filter-name>encoding</filter-name> 3 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 4 <!-- 设置编码参是UTF8 --> 5 <init-param> 6 <param-name>encoding</param-name> 7 <param-value>UTF-8</param-value> 8 </init-param> 9 </filter> 10 <filter-mapping> 11 <filter-name>encoding</filter-name> 12 <url-pattern>/*</url-pattern> 13 </filter-mapping>
针对get请求乱码情况,查阅得知两种解决办法:
- 设置tomcat的server.xml文件,加入标红配置
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
- 对参数进行重新编码:
String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8");
以上是关于xml已经指定了UTF-8编码格式仍然导出中文乱码的主要内容,如果未能解决你的问题,请参考以下文章
python中文显示乱码,已经在开头有了coding: utf-8