2016-02-02 5 views
1

J'utilise ResourceManager pour localiser les chaînes dans mon application de formulaires Web. L'application prend en charge en-us et sv-se. Les chaînes sont récupérées correctement à partir des fichiers de ressources respectifs, mais lorsqu'elles sont affichées, les caractères Unicode sont des valeurs indésirables.ResourceManager.GetString donne une localisation avec un mauvais encodage

resources.sv-se.restext

... 
ContactInfoFormatPrimary={0} (primär) 
... 

Sortie

enter image description here

code

qui obtient la ressource:

ResourceManager resourceManager = GetResourceManager(...) 
... 
text = resourceManager.GetString(resourceId); 

J'ai essayé de débogage du code, et le texte est retourné {0} (prim�r)

Qu'est-ce qui provoque le décodage incorrect de la ressource?

MISE À JOUR:

J'ai pu utiliser la même architecture dans une application de la console et obtenir la chaîne correcte, est-il tout ce qui concerne la configuration de l'application que je dois prendre en charge?

+0

Affiché * où * (Web/Bureau) et avec quelle police? C'est typiquement une question de police ou de codage de sortie. –

+0

Ne ressemble pas à un problème de police, car la fenêtre de débogage de VS affiche la même chose. – rjv

+1

Cela s'est mal passé lorsque la chaîne a été entrée. Crystal ball indique que vous utilisez des fichiers texte au lieu des fichiers .resx à localiser et qu'ils n'ont pas de nomenclature. –

Répondre

2

Très probablement, vous ne sauvegardez pas vos fichiers texte (ressources .txt, .restext) comme UTF-8 ou UTF-16/Unicode. Voir le paragraphe suivant du MSDN documentation of Resgen.exe:

Un fichier texte qui contient des ressources doivent être enregistrées avec UTF-8 ou Unicode (UTF-16) de codage à moins qu'il ne contient que des caractères de la plage Latin de base (à U + 007F). Resgen.exe supprime les caractères ANSI étendus lorsqu'il traite un fichier texte enregistré à l'aide du codage ANSI.

La meilleure façon de vérifier la enconding d'un fichier texte est pour l'ouvrir dans Notepad, cliquez sur Save as... dans le menu File et vérifier ce qui est affiché dans la Encoding déroulant dans le coin inférieur droit. Il doit être défini sur UTF-8 ou Unicode.

Pour fixer le codage il suffit de sélectionner UTF-8 ou Unicode dans les Save as... de dialogue Notepad et cliquez Save écraser le fichier d'origine.

+0

J'ai utilisé notepad ++ >> encoding >> convertir en utf-8. Merci pour le plomb. – rjv