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没有起作用。

参考技术A encode后,需要decode保存,才算转换了编码。

springMVC中文乱码

情况:

  1. eclipse编码全部设置了UTF-8格式。
  2. 使用form表单,post方法
  3. springMVC框架,JavaBean传值

问题:后台取值中文乱码

解决:

  1. 最开始只注意到控制台中文乱码,在eclipse中设置utf-8编码格式不起作用;包括window->Preferences 和 run as 中Arguments 添加 -Dfile.encoding=UTF-8,修改了tomcat的server.xml文件,加入URIEncoding=“UTF-8”配置
  2. 然后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编码格式仍然导出中文乱码的主要内容,如果未能解决你的问题,请参考以下文章

Tomcatt引起的中文乱码

excel通过VBA导出XML文件时候如何设定编码格式

java导出 ,CSV格式文件,中文显示成问号,怎么解决?

python中文显示乱码,已经在开头有了coding: utf-8

delphi 保存UTF-8格式的xml文件,在IE中有乱码。

php 多语言(UTF-8编码)导出ExcelCSV乱码解决办法之导出UTF-8编码的ExcelCSV