1

カスタムメイドの Wysiwyg コンポーネントを使用して、ユーザーが HTML、JavaScript、および CSS を含むオブジェクトを作成できるアプリケーションの一部があります。これらのオブジェクトは、ある時点でシリアライズされ、後でデシリアライズされます。ただし、ユーザー/クライアントは世界中にいるため、逆シリアル化中に不満を引き起こす文字を入力することがあります。最近、中国のユーザーからシリアル化された XML に表示されるのを見たことがありますが、これは後に XML が MSXML2 を使用する一部の Java コードを介して読み込まれるため、問題を引き起こします (同じことは .NET および System.Xml の問題ではありませんが、これは別の問題です)。 )。現在、MSXML2 で行き詰まっているため、これについては個別に対処する必要があります。

現在の HtmlTextAttribute ではなく、一部のフィールドを CDATA としてシリアル化するように変更することを提案します。

どうすればこれを達成できますか?また、そのような変更の前にシリアル化されたデータに影響を与えますか?

4

1 に答える 1

0

0x1D は誰も使用しない ASCII 制御文字であるため、中国語ユーザーの入力は UTF-8 以外のエンコーディングを使用しているようであり、それを XML にシリアル化するコードは、入力バイトが Unicode コード ポイントであると誤って想定しています (そしてそれらをシリアル化します)。文字実体参照として)。

シリアライザーはまだモジバケを出力しているため、CDATA に変更するだけでは機能しません。

最も簡単な修正方法は、クライアント アプリケーションが全体で UTF-8 を使用するようにすることです。

于 2012-12-22T21:37:13.017 に答える