微信开发中文乱码问题总结

1.servlet中设置request和response编码

<span style="font-size:18px;">request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");</span>

2.解析xml字符串时需要设置编码

<span style="font-size:18px;">public static Map<String, String> parseXml(String xmlStr) throws Exception {
        	// 将解析结果存储在HashMap中
	    	Map<String, String> map = new HashMap<String, String>();
	    	// 从request中取得输入流
	    	InputStream inputStream=new ByteArrayInputStream(xmlStr.getBytes("utf-8"));
//	    	InputStream inputStream = xmlStr.getInputStream();
	    	// 读取输入流
	    	SAXReader reader = new SAXReader();
	    	reader.setEncoding("utf-8");
	    	Document document = reader.read(inputStream);
	    	document.setXMLEncoding("utf-8");
	    	// 得到xml根元素
	    	Element root = document.getRootElement();
	    	// 得到根元素的所有子节点
	    	List<Element> elementList = root.elements();

	    	// 遍历所有子节点
	    	for (Element e : elementList)
	    		map.put(e.getName(), e.getText());

	    	// 释放资源
	    	inputStream.close();
	    	inputStream = null;

	    	return map;
    }</span>
3.服务器编码问题导致中文乱码
感谢这位作者的分享   原文链接
原因:file.encoding默认的字符集跟操作系统有关,中文操作系统下面默认的字符集是GBK,如果流程定义的xml文件中用UTF-8,
则不能正确转换,所以需要修改file.encoding的值为UTF-8。
解决办法:
部署在tomcat中的文件要修改file.encoding的值,可以在tomcat的catalina.bat文件中set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%的后面加上
 -Dfile.encoding="UTF-8"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值