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 перезаписать оригинальный файл

Другие вопросы по тегам