名前、年齢などのユーザー情報を含むxmlファイルを解析しています。ただし、ユーザーは世界中から来ているため、xmlに異なる文字セットが必要です。たとえば、「Sikl¢si」という名前のユーザーがいます。UTF-8をエンコードするxmlを設定すると、c#xmldocumentオブジェクトはxmlの読み込み時に例外をスローします。エンコーディングをiso-8859-9に変更しましたが、現在は機能しています。しかし、iso-8859-9でカバーされていない別の面白い文字がある場合は、再び問題になります。この問題の究極の解決策は何ですか。
2 に答える
3
最終的な解決策は、最初にファイルをエンコードするために使用されたエンコードを知ることです。XML ファイルは、XML 宣言で使用しているエンコーディングを示す必要があります (例: <?xml charset="UTF-8" ?>
)。そうでない場合、ドキュメントは UTF-8 または UTF-16 である必要があります (これらの違いは自動的に検出されます)。
XML パーサーは、XML ファイル内の情報に基づいて透過的にエンコードを処理する必要があります。
解析できないドキュメントを受け取った場合、問題はそもそもドキュメントの生成方法にある可能性があります。それらを拒否し、送信者にエンコーディングを修正するように指示する必要があります。
(どの Unicode エンコーディングでも、必要になる可能性が高いほぼすべての文字を処理できることに注意してください (また、そうでない膨大な数の文字も処理できます)。問題は、ドキュメントが UTF-8 ではなく、UTF-8 で処理できないことです。 t が使用されている文字を処理します)。
于 2012-02-08T12:00:09.603 に答える
-1
それらのほとんどをカバーするUTF-32にします。UTF の詳細については、こちらをご覧ください。
于 2012-02-08T11:58:04.440 に答える