1

この org.jdom.Document があり、そこから要素を取得し、xpath で値を出力しようとしています。問題は、ノルウェー語の文字が ? として出てくることです。æ ø å の代わりに。

Element nameNode = (Element) XPath.selectSingleNode( element, "contentdata/name" );
System.out.print(nameNode.getText());
// Produces "S?rbyen"

私が使うとき

XMLOutputter outputter = new XMLOutputter( Format.getPrettyFormat());
outputter.output( nameNode, System.out );
// Produces "<name>Sørbyen</name>"

では、XPath.selectSingleNode() または nameNode.getText() を使用して適切な UTF-8 を返すにはどうすればよいでしょうか?

更新: 文字列はコンソール出力でのみ変更され、nameNode.getText().equalsIgnoreCase("Sørbyen") を比較すると true が返されることが判明しました。

4

3 に答える 3

3

問題は xpath ではなく、値を検証しようとしている方法にあります。コンソールは、デフォルトでは UTF-8 が有効になっていません。だから使うときは

System.out.print(nameNode.getText());

奇妙な文字が表示されます。

Eclipse を使用している場合は、Run Configuration > Common -> Encoding -> ドロップダウンから UTF-8 を選択して、コンソールのエンコード設定を構成できます。

ここに画像の説明を入力

于 2013-08-13T10:46:34.540 に答える
0

問題は、表示されている文字を取得することではありません。アプリケーションを起動するためのコマンドライン引数として以下を使用すると、動作するはずです

-Dfile.encoding=UTF-8-Dfile.encoding=UTF-8

それが役に立てば幸い

于 2013-08-13T10:48:52.483 に答える
0

XmlOutputter の親は何ですか? OutputStreamWriter の場合は、エンコーディングを「UTF-8」に設定しますhttp://docs.oracle.com/javase/7/docs/api/java/io/OutputStreamWriter.html#OutputStreamWriter(java.io.OutputStream .

このような:

OutputStreamWriter sw = new OutputStreamWriter(System.out, "UTF-8");
于 2013-08-13T10:49:59.857 に答える