解决中文乱码问题

来源:5-4 消息的接收与响应2

imooc_com

2015-07-23 23:13

/**
* 将文本消息转换成Xml
*
*
*/
public static String messageToXml(TextMessage msg) {
DocumentBuilder documentBuilder = getDocumentBuilder();
Document document = documentBuilder.newDocument();
document.setXmlStandalone(true);
Element root = document.createElement("xml");

Element toUsername = document.createElement("ToUserName");
toUsername.setTextContent(msg.getToUserName());
root.appendChild(toUsername);

Element FromUserName = document.createElement("FromUserName");
FromUserName.setTextContent(msg.getFromUserName());
root.appendChild(FromUserName);

Element CreateTime = document.createElement("CreateTime");
CreateTime.setTextContent(msg.getCreateTime());
root.appendChild(CreateTime);

Element MsgType = document.createElement("MsgType");
MsgType.setTextContent(msg.getMsgType());
root.appendChild(MsgType);

Element Content = document.createElement("Content");
Content.setTextContent(msg.getContent());
root.appendChild(Content);

Element MsgId = document.createElement("MsgId");
MsgId.setTextContent(msg.getMsgId());
root.appendChild(MsgId);

document.appendChild(root);

TransformerFactory tf = TransformerFactory.newInstance();
Transformer t;
ByteArrayOutputStream bos = null;
String result = null;
try {
t = tf.newTransformer();
t.setOutputProperty("encoding", "UTF8");// 解决中文问题
bos = new ByteArrayOutputStream();
t.transform(new DOMSource(document), new StreamResult(bos));
result = bos.toString("utf8");// 解决中文问题
} catch (TransformerConfigurationException e1) {
e1.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;

}



public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html; charset=utf-8");
		PrintWriter out = response.getWriter();
		Map<String, String> map = MessageUtil.XmlToMap(request);
		TextMessage msg = new TextMessage(map);
//		System.out.println(msg.toString());
		if ("text".equals(msg.getMsgType())) {
			TextMessage sendMsg = new TextMessage();
			sendMsg.setContent("你才:" + msg.getContent());
			sendMsg.setCreateTime(new Date().getTime() + "");
			sendMsg.setFromUserName(msg.getToUserName());
			sendMsg.setToUserName(msg.getFromUserName());
			sendMsg.setMsgId(msg.getMsgId());
			sendMsg.setMsgType("text");
			String msgString = MessageUtil.messageToXml(sendMsg);
			out.println(msgString);
			System.out.println(msgString);
			out.flush();
		}


写回答 关注

3回答

  • weibo_SecturityE_0
    2015-07-31 18:05:46

    乱码问题解决 

    我使用的是spring mvc     

    return new String(re.getBytes("utf-8"),"ISO8859_1"); 就显示中文了.


    weibo_...

    我的整个项目都是utf-8加上这一句正常

    2015-07-31 18:06:24

    共 1 条回复 >

  • 慕的地7368845
    2015-07-25 12:31:44

    是不是还少了getDocumentBuilder方法,这段代码加进去以后调不通啊~!求完整代码包~

  • imooc_com
    2015-07-23 23:15:51

    还要注意一点....java文件字符编码也要设置成utf8

初识Java微信公众号开发

Java微信公众号开发的入门教程,掌握微信公众号基本概念

158335 学习 · 469 问题

查看课程

相似问题