- - PR -
xmlファイル読み込み後の文字化けについて
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-08-18 14:35
Document document =
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse( new File("sources/xmlSample/sample.xml")); とxmlファイルを読み込み下記のようなデータを表示させようとすると、 <?xml version="1.0" encoding="Shift_JIS"?> <data colmun="data2@">鰍アのデータを削除します−</data> String str = element.getFirstChild().getNodeValue(); System.out.println(str); data2?@:?鰍アのデータを削除します? のように文字化けしてしまいます。 どのように対処したらいいのでしょうか? | ||||
|
投稿日時: 2004-08-18 15:41
XML文書のencodingを"Windows-31J"にするとどうなりますか?
| ||||
|
投稿日時: 2004-08-18 15:49
xml文書のencodingを"Windows-31J"にすると表示されます。
しかし、XML文書は"Shift_JIS"にしたいとのことです。 ですから、 System.out.println(new String(str.getBytes(), "Windows-31J")); などと色々試したのですが、うまく表示されません。 色々サイトを見たのですが、未だわからないので、 わかる方がいらっしゃいましたら、宜しくお願い致します。 | ||||
|
投稿日時: 2004-08-18 16:07
パーサーがXercesであれば、org.apache.xerces.util.EncodingMapを変更することで対応できるかもしれません。
| ||||
|
投稿日時: 2004-08-18 16:15
パーサーの種類はどのようにしたら確認できるのでしょうか?
xml初心者なもので、よくわかっていなくて申し訳ありませんが、 教えていただきたく思います。 | ||||
|
投稿日時: 2004-08-18 16:15
"(株)"等のいわゆるWindows日本語版の特殊文字を扱う場合,(IANA規約上では)"Windows-31J"が正です。
文字セット名"Windows-31J"を明示できない,何か致命的な理由でもあるのでしょうか? ※参考ページ http://www.ingrid.org/java/i18n/encoding/shift_jis.html http://www.iana.org/assignments/character-sets | ||||
|
投稿日時: 2004-08-18 16:17
うーん、指定のエンコーディングと異なる文字コードで文書を記述したいって本末転倒な 気がするのですが。なぜそのような要望が出ているのか、もう少しつっこんで聞けませんか? | ||||
|
投稿日時: 2004-08-18 16:24
SuperCreekさんや、ukさんが "Windows-31J"を明示できない理由などを聞いているということは、 new String(str.getBytes(), "Windows-31J") のように、何かしら、変換処理をしても文字化けは直らないということ なのでしょうか? それとも無理やり、変換すれば、XML文書は"Shift_JIS"のままでも 文字化けせずに表示されるようになるのでしょうか? 宜しくお願い致します。 | ||||
