ResourceManager.GetString 给出了错误编码的本地化

ResourceManager.GetString gives localization with wrong encoding

我使用 ResourceManager 来本地化我的 Web 表单应用程序中的字符串。该应用程序支持 en-ussv-se。字符串从各自的资源文件中正确获取,但是当它们显示时,unicode 字符作为垃圾值出现。

resources.sv-se.restext

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

输出

获取资源的代码:

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

我试过调试代码,返回的文本是{0} (prim�r)

是什么导致资源解码不正确?

更新:

我能够在控制台应用程序中使用相同的架构并获得正确的字符串,我需要处理与应用程序配置相关的任何事情吗?

很可能您没有将资源文本文件 (.txt.restext) 保存为 UTF-8UTF-16/Unicode。请参阅 MSDN documentation of Resgen.exe 中的以下段落:

A text file that contains resources must be saved with UTF-8 or Unicode (UTF-16) encoding unless it contains only characters in the Basic Latin range (to U+007F). Resgen.exe removes extended ANSI characters when it processes a text file that is saved using ANSI encoding.

检查文本文件的编码最简单的方法是在Notepad中打开它,点击File中的Save as...菜单并检查右下角 Encoding 下拉菜单中显示的内容。它应该设置为 UTF-8Unicode.

修复编码只需在NotepadSave as...对话框中selectUTF-8Unicode然后点击 Save 覆盖原始文件。