微信開発中国語文字化けし問題の総括

1575 ワード

1.servletでrequestとresponse符号化を設定する

request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");

2.xml文字列を解析する際にエンコーディングを設定する必要がある

public static Map parseXml(String xmlStr) throws Exception {
        	//  HashMap 
	    	Map map = new HashMap();
	    	//  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 elementList = root.elements();

	    	//  
	    	for (Element e : elementList)
	    		map.put(e.getName(), e.getText());

	    	//  
	    	inputStream.close();
	    	inputStream = null;

	    	return map;
    }
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"