0

長い文章で申し訳ありませんが、この問題は簡単には述べられません。

私は最近、jdom を使用して XML を解析および操作し、同僚のためにいくつかの SSIS パッケージを再構成するための Java を作成しました。プログラムは機能しましたが、結果のファイルがクラッシュしました。クラッシュの原因を突き止めることができたのは、元のファイルにあるほとんど印刷されない奇妙な文字でした。これは、jdom によって書き込まれたファイルでは再現されませんでした。

このキャラクターの奇妙な点は、すべてのエディターに表示されるわけではないということです。たとえば、Oxygen XML エディターはそれを認識しません。ただし、メモ帳では、元の著作権表示は次のように表示されます。

<DTS:Property DTS:Name="TaskContact">Execute SQL Task; Microsoft Corporation; Microsoft 
SQL Server v9; © 2004 Microsoft Corporation; All Rights     
Reserved;http://www.microsoft.com/sql/support/default.asp;1</DTS:Property>

および同じ要素の変換されたバージョン:

<DTS:Property DTS:Name="TaskContact">Execute SQL Task; Microsoft Corporation; Microsoft 
SQL Server v9; © 2004 Microsoft Corporation; All Rights 
Reserved;http://www.microsoft.com/sql/support/default.asp;1</DTS:Property>

(問題の文字は、著作権記号の直前の Â です)

問題のパッケージでグローバル置換を実行すると、Â -> "" および © -> "(c)" で問題が解決しましたが、変更されていない要素が変更されたパッケージに配置されると、問題が再発することが判明しました。パッケージなので、問題の根底にあるものはわかりません。

繰り返しますが、長い投稿で申し訳ありませんが、詳細を省略したくありませんでした. 洞察や提案をいただければ幸いです。私はかなり困惑しています。

私の同僚は、これらを読み込もうとしてエラーメッセージを私に送ってきます。役に立つなら投稿できます。

4

1 に答える 1

0

問題の根源については、あるエンコーディングで書き込み、別のエンコーディングを読み取ることです。この質問に対する私の回答を参照してください。£ が £ になるのはなぜですか? XML ISO エンコーディングの問題? ポンド記号 £ を著作権記号 © (unicode U+00A9) に置き換えるだけです。エンコードの混同が発生している場所を見つけることができれば幸いです。

于 2011-10-09T21:00:59.880 に答える