ResourceManager.GetString дает локализацию с неправильной кодировкой
Я использую ResourceManager
локализовать строки в моем приложении веб-форм. Приложение поддерживает en-us
а также sv-se
, Строки правильно выбираются из соответствующих файлов ресурсов, но когда они отображаются, символы Юникода появляются как ненужные значения.
resources.sv-se.restext
...
ContactInfoFormatPrimary={0} (primär)
...
Выход
Код, который получает ресурс:
ResourceManager resourceManager = GetResourceManager(...)
...
text = resourceManager.GetString(resourceId);
Я попытался отладить код, и текст возвращается {0} (prim�r)
Что является причиной неправильного декодирования ресурса?
ОБНОВИТЬ:
Я смог использовать ту же архитектуру в консольном приложении и получить правильную строку, есть ли что-то, связанное с конфигурацией приложения, о котором мне нужно позаботиться?
1 ответ
Скорее всего, вы не сохраняете свои текстовые файлы ресурсов (.txt
, .restext
) как UTF-8
или же UTF-16
/Unicode
, См. Следующий абзац из документации MSDNResgen.exe
:
Текстовый файл, содержащий ресурсы, должен быть сохранен в кодировке UTF-8 или Unicode (UTF-16), если только он не содержит только символы в диапазоне базовой латиницы (до U+007F). Resgen.exe удаляет расширенные символы ANSI при обработке текстового файла, сохраненного с использованием кодировки ANSI.
Самый простой способ проверить завершение текстового файла - открыть его в Notepad
нажмите Save as...
в File
меню и проверьте, что отображается в Encoding
выпадающий в правом нижнем углу. Должно быть установлено UTF-8
или же Unicode
,
Чтобы исправить кодировку, просто выберите UTF-8
или же Unicode
в Save as...
диалог Notepad
и ударил Save
перезаписать оригинальный файл