2012-05-25 8 views
0

Je localise mon application et à travers elle il y a des boîtes de message pour alerter l'utilisateur de certaines choses. Lorsque j'inclue des caractères chinois dans des zones de texte, ils ressemblent à un tas de carrés lors du débogage dans VS2010, mais sont ensuite convertis en caractères appropriés lorsqu'ils sont affichés dans l'interface utilisateur via des objets liés aux propriétés. Mais quand le code appelle directement messagebox.show ("caractères chinois") il finit par afficher juste un tas de carrés vides. Pourquoi est-ce?Silverlight MessageBox.Show() n'affiche pas les caractères chinois

Répondre

2

Il n'existe pas de "double octet" dans Silverlight. Toutes les chaînes sont encodées en utf-16. Double octets est un hack à partir des jours de pages de code 8 bits pour trouver un moyen d'encoder le texte CJK. Vous devrez convertir ce texte encodé en utf-16 avec la classe Encoding.

La visualisation du texte affiché sous la forme de carrés peut être due au fait que les caractères sont des codes de contrôle dus à un mauvais codage. Ou le support manquant pour les glyphes dans les polices installées sur la machine. C'est un problème qui disparaît rapidement, vous ne devriez normalement l'avoir que sur XP sans le support de polices East Asian installé.

+0

Bien que les caractères proviennent des traducteurs et ont été fournis dans une feuille de calcul Excel, ils sont supposément Unicode. À partir de la feuille de calcul, j'importe les données dans une table où les colonnes sont nvarchar. Si je charge les données dans mon programme, affectez-le à une propriété et liez-le à un bloc de texte sur l'écran qu'il affiche en chinois. Si j'utilise plutôt la chaîne pour lancer un MessageBox.Show (ChineseCharacterString), il affiche un tas de boîtes à la place. Quelle partie du processus devinez-vous va mal? – Josh

+0

Pouce. Aucune idée, chasser les octets, pas les cordes. –

+0

En parlant en tant que vétéran de ces jours, ce n'était pas vraiment un hack, juste un tas de codages multi-octets distincts, par opposition au plus petit ensemble d'encodages multi-octets que nous avons aujourd'hui (UTF-8, UTF-16, UTF-32) . Maintenant, quand une langue particulière ne pouvait pas se mettre suffisamment d'accord pour se mettre d'accord sur moins d'une douzaine de codages séparés ... –

Questions connexes