2008-12-15 9 views
1

Nous avons une partie de notre application où nos utilisateurs peuvent créer des objets contenant du HTML, JavaScript et CSS grâce à des composants Wysiwyg personnalisés. Ces objets sont à un moment donné sérialisés et plus tard désérialisés. Cependant, comme nos utilisateurs/clients sont situés partout dans le monde, ils saisissent parfois des caractères qui provoquent des griefs pendant la désérialisation. Récemment, j'ai vu  apparaître dans le fichier XML sérialisé de l'utilisateur en Chine, ce qui a causé des problèmes plus tard car le code XML est chargé via du code Java utilisant MSXML2 (ce n'est pas un problème avec .NET et System.Xml, mais c'est un autre problème). Nous sommes actuellement bloqués avec MSXML2, donc ceci doit être adressé séparément.XmlTextAttribute et CDATA

Une proposition consiste à modifier certains champs à sérialiser en tant que CDATA, pas HtmlTextAttribute comme ils le sont aujourd'hui.

Comment puis-je accomplir cela et aura-t-il un impact sur les données sérialisées avant un tel changement?

+0

Quel encodage utilisez-vous? – Tomalak

+0

Spécifiez-vous l'encodage et lang dans la déclaration de document? –

Répondre

0

0x1D est un caractère de contrôle ASCII que personne n'utilise, il semble donc que l'entrée de l'utilisateur chinois utilise un codage non-UTF-8, et le code qui le sérialise en XML suppose que les octets d'entrée sont des points Unicode (et en les sérialisant comme références d'entités de caractères).

La simple modification de CDATA ne fonctionnera pas, car le sérialiseur produira toujours le mojibake. La solution la plus simple est de s'assurer que l'application cliente utilise UTF-8 tout au long de la procédure.

Questions connexes