- - PR -
XML出力で数値参照(&#xxxx)に変換される
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-04-25 21:58
こんにちは
JAXPでXMLを出力しているのですが、(\\uffe4)が、¦で出力されてしまいます。 (\\uffe4)が、そのまま(0xfa55)で出力されることを期待していますが、 いろいろ調べたのですが、行き着きませんでした。 ちなみに、エンコード指定は、Shift_JISです。 あと、内部コードとしてHEXダンプ(\\uffe4)で確認をしたので入力時の文字化けはないと考えています。 今回のシステムは、統一コードとして、Shift_JISが要求されているため、UTF-8にできません。 どなたかご存知の方がいらっしゃれば、ご教授ください。 出力部のコードは以下となります。
| ||||
|
投稿日時: 2007-04-26 16:20
XMLとしては、¦はコード0xFFE4と同じ扱いとなるので、出力されたXMLの文字参照を元に戻すプログラムを作成するほうが現実的です。
少し難しいので、作っておきました。 Result result = new StreamResult(new File(outfile)); を Result result = new StreamResult(new UnentityWriter(new FileOutputStream(outfile))); にすると、途中に0xFFE4が出力されます。
[ メッセージ編集済み 編集者: だっちょ 編集日時 2007-04-26 17:53 ] | ||||
|
投稿日時: 2007-04-26 18:46
回答ありがとうございます。
変換後の手動変換は最悪の手立てとして考えていました。 あと、以下の手立て(これも事後変換)でも可能でしたが、問題でしょうか? @現在、Shift_JIS指定しているところをUTF-8にする。(UTF-8で出力、この時点では当然化けませんが、Unicodeとなってしまいます。) Aそこで、出力String全体を、Cp943Cで再変換。(IBM WASのため) B最後に、<?xml version="1.0" encoding="UTF-8"?>を<?xml version="1.0" encoding="Shift_JIS"?>に変換する。 いかがでしょうか?
| ||||
|
投稿日時: 2007-04-26 19:22
Unicodeで0xFFE4となる文字が、Shift_JISに変換されるときに0xFFE4でなくなると思いますが。
| ||||
|
投稿日時: 2007-04-26 20:32
すみません。
言い忘れたのですが、DOMにセットする値を事前にCP943C→MS932の機種依存文字変換を実施しています。 ですので、
の後に、HEXダンプすると、0xFFE4になっており、最終的にファイル出力で(0xfa55)のバイトコード(HEXエディタ)を確認できました。 | ||||
|
投稿日時: 2007-05-08 10:14
結局のところ、いい解決策が見つからず、現段階での最善策として
Shift_JISでのエンコードはやめ、UTF-8でのデフォルトエンコード でXMLを生成し、XML宣言部のUTF-8を無理やりShift_JISに文字置換 を実施するにいたりました。 今回のシステムでは、他システム連携にMQ(IBMの製品)を使用 しているため、UTF-8で生成した文字列をMQへキューイングする し、送信するときに、エンコード(Shift_JIS)されるため、アプ リケーション側ではあくまでUnicodeのままとすることに収まりま した。 回答いただいた方、どうもありがとうございました。 |
1