为了账号安全,请及时绑定邮箱和手机立即绑定

解决中文乱码问题

/**
* 将文本消息转换成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 回答

乱码问题解决 

我使用的是spring mvc     

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


0 回复 有任何疑惑可以回复我~
#1

weibo_SecturityE_0

我的整个项目都是utf-8加上这一句正常
2015-07-31 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Java微信公众号开发
  • 参与学习       158330    人
  • 解答问题       469    个

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

进入课程

解决中文乱码问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信