ResourceManager.GetString 给出了错误编码的本地化
ResourceManager.GetString gives localization with wrong encoding
我使用 ResourceManager
来本地化我的 Web 表单应用程序中的字符串。该应用程序支持 en-us
和 sv-se
。字符串从各自的资源文件中正确获取,但是当它们显示时,unicode 字符作为垃圾值出现。
resources.sv-se.restext
...
ContactInfoFormatPrimary={0} (primär)
...
输出
获取资源的代码:
ResourceManager resourceManager = GetResourceManager(...)
...
text = resourceManager.GetString(resourceId);
我试过调试代码,返回的文本是{0} (prim�r)
是什么导致资源解码不正确?
更新:
我能够在控制台应用程序中使用相同的架构并获得正确的字符串,我需要处理与应用程序配置相关的任何事情吗?
很可能您没有将资源文本文件 (.txt
、.restext
) 保存为 UTF-8
或 UTF-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-8
或 Unicode
.
要修复编码只需在Notepad
的Save as...
对话框中selectUTF-8
或Unicode
然后点击 Save
覆盖原始文件。
我使用 ResourceManager
来本地化我的 Web 表单应用程序中的字符串。该应用程序支持 en-us
和 sv-se
。字符串从各自的资源文件中正确获取,但是当它们显示时,unicode 字符作为垃圾值出现。
resources.sv-se.restext
...
ContactInfoFormatPrimary={0} (primär)
...
输出
获取资源的代码:
ResourceManager resourceManager = GetResourceManager(...)
...
text = resourceManager.GetString(resourceId);
我试过调试代码,返回的文本是{0} (prim�r)
是什么导致资源解码不正确?
更新:
我能够在控制台应用程序中使用相同的架构并获得正确的字符串,我需要处理与应用程序配置相关的任何事情吗?
很可能您没有将资源文本文件 (.txt
、.restext
) 保存为 UTF-8
或 UTF-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-8
或 Unicode
.
要修复编码只需在Notepad
的Save as...
对话框中selectUTF-8
或Unicode
然后点击 Save
覆盖原始文件。