UTF-8 ドキュメントを HTML に正しく変換する際に問題があります。
Solaris の Glassfish サーバー内でコードを実行すると、無効な結果が生成されます。
Windows のテスト環境で実行すると、結果は有効です。
どちらの環境も Java 1.6.0_27 を使用しています
両方のコードを含めています-関連する違いはありません。
アプリ サーバー テストの出力は次のとおりです (UTF-8 がこのプロセスを通過する場合)。
<CityName>Ð Ð¾Ð²Ð¾Ñ Ð¸Ð±Ð¸Ñ€Ñ Ðº</CityName>
<CityName>Новосибирск</CityName>
2 番目には複数のエンティティ エンコーディングがあるのに対し、1 番目は純粋な UTF-8 であることに注意してください。エンコーディングが間違っています。
最初 - アプリ サーバー コード (ロガーは log4j ロガーです - テスト 13 では良い結果を示し、テスト 14 では悪い結果を示します):
logger.info("===test13:"+descr+req);
DocumentBuilderFactory domFactory = DocumentBuilderFactory .newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder domBuilder = domFactory.newDocumentBuilder();
Document doc = domBuilder.parse(new InputSource(new StringReader(req)));
logger.info("===test14:"+XmlHelper.domToString(doc));
次に、テスト コード - "out" は、両方のケースで適切なデータを示します。
PrintStream out = new PrintStream(System.out, true, "UTF-8");
String inmsg = TestRvcMessage.readUtfFile(fname);
inmsg = inmsg.trim();
out.println("INPUT:"+inmsg);
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder domBuilder = domFactory.newDocumentBuilder();
Document doc = domBuilder.parse(new InputSource(new StringReader(inmsg)));
out.println("OUTPUT:"+xmlHelper.domToString(doc);