2016-02-02 2 views
1

Я использую ResourceManager, чтобы локализовать строки в моем приложении веб-форм. Приложение поддерживает en-us и sv-se. Строки выбираются правильно из соответствующих файлов ресурсов, но когда они отображаются, символы юникода являются значениями нежелательной почты.ResourceManager.GetString дает локализацию с неправильной кодировкой

resources.sv-se.restext

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

Выход

enter image description here

код, который получает ресурс:

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

Я попытался отладки кода, и текст, возвращаемый является {0} (prim�r)

Что заставляет ресурс декодировать неправильно?

UPDATE:

Я был в состоянии использовать ту же архитектуру в консольном приложении и получить правильную строку, есть все, что связанно с конфигурацией приложения, мне нужно заботиться?

+0

Отображается * где * (веб-сайт) и с каким шрифтом? Обычно это проблема с шрифтом или выходной кодировкой. –

+0

Не похоже на проблему с шрифтом, поскольку окно отладки VS отображает то же самое. – rjv

+1

Это пошло не так, когда строка была введена. Crystal Ball говорит, что вы используете текстовые файлы вместо файлов .resx для локализации, и у них нет спецификации. –

ответ

2

Скорее всего, вы не экономя ваши текстовые файлы ресурсов (.txt, .restext), как UTF-8 или UTF-16/Unicode. Смотрите следующий абзац из MSDN documentation of Resgen.exe:

Текстовый файл, содержащий ресурсы должны быть сохранены в кодировке UTF-8 или Unicode (UTF-16) кодирования, если она не содержит только символы в диапазоне базовой латиницы (до U + 007F). Resgen.exe удаляет расширенные символы ANSI при обработке текстового файла, который сохраняется с использованием кодировки ANSI.

Самый простой способ Проверяй enconding текстового файла, чтобы открыть его в Notepad, нажмите Save as... в меню File и проверьте, что отображается в Encoding выпадающего в правом нижнем углу. Он должен быть установлен в UTF-8 или Unicode.

Чтобы исправить кодировку просто выберите UTF-8 или Unicode в Save as... диалоге Notepad и нажмите Save переписав оригинальный файл.

+0

Я использовал notepad ++ >> encoding >> convert to utf-8. Спасибо за лидерство. – rjv