- PR -

xmlファイル読み込み後の文字化けについて

投稿者投稿内容
cliquot
会議室デビュー日: 2004/08/18
投稿数: 6
投稿日時: 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?@:?鰍アのデータを削除します?

のように文字化けしてしまいます。
どのように対処したらいいのでしょうか?
おがわ
大ベテラン
会議室デビュー日: 2001/08/01
投稿数: 199
お住まい・勤務地: 千葉県
投稿日時: 2004-08-18 15:41
XML文書のencodingを"Windows-31J"にするとどうなりますか?

cliquot
会議室デビュー日: 2004/08/18
投稿数: 6
投稿日時: 2004-08-18 15:49
xml文書のencodingを"Windows-31J"にすると表示されます。

しかし、XML文書は"Shift_JIS"にしたいとのことです。
ですから、
System.out.println(new String(str.getBytes(), "Windows-31J"));
などと色々試したのですが、うまく表示されません。

色々サイトを見たのですが、未だわからないので、
わかる方がいらっしゃいましたら、宜しくお願い致します。
けむ
常連さん
会議室デビュー日: 2003/09/26
投稿数: 40
投稿日時: 2004-08-18 16:07
パーサーがXercesであれば、org.apache.xerces.util.EncodingMapを変更することで対応できるかもしれません。
cliquot
会議室デビュー日: 2004/08/18
投稿数: 6
投稿日時: 2004-08-18 16:15
パーサーの種類はどのようにしたら確認できるのでしょうか?
xml初心者なもので、よくわかっていなくて申し訳ありませんが、
教えていただきたく思います。
おがわ
大ベテラン
会議室デビュー日: 2001/08/01
投稿数: 199
お住まい・勤務地: 千葉県
投稿日時: 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
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-08-18 16:17
引用:

cliquotさんの書き込み (2004-08-18 15:49) より:
xml文書のencodingを"Windows-31J"にすると表示されます。

しかし、XML文書は"Shift_JIS"にしたいとのことです。


うーん、指定のエンコーディングと異なる文字コードで文書を記述したいって本末転倒な
気がするのですが。なぜそのような要望が出ているのか、もう少しつっこんで聞けませんか?
cliquot
会議室デビュー日: 2004/08/18
投稿数: 6
投稿日時: 2004-08-18 16:24

SuperCreekさんや、ukさんが
"Windows-31J"を明示できない理由などを聞いているということは、

new String(str.getBytes(), "Windows-31J")

のように、何かしら、変換処理をしても文字化けは直らないということ
なのでしょうか?
それとも無理やり、変換すれば、XML文書は"Shift_JIS"のままでも
文字化けせずに表示されるようになるのでしょうか?

宜しくお願い致します。

スキルアップ/キャリアアップ(JOB@IT)