ResourceManager.GetString为本地化提供了错误的编码

时间:2016-02-02 11:59:32

标签: c# encoding localization resource-files resgen

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

resources.sv-se.restext

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

输出

enter image description here

获取资源的代码:

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

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

导致资源解码错误的原因是什么?

更新:

我能够在控制台应用程序中使用相同的架构并获取正确的字符串,是否有任何与应用程序配置相关的内容需要处理?

1 个答案:

答案 0 :(得分:2)

您很可能不会将资源文本文件(.txt.restext)保存为UTF-8UTF-16 / Unicode。请参阅MSDN documentation of Resgen.exe

中的以下段落
  

包含资源的文本文件必须使用UTF-8或Unicode(UTF-16)编码保存,除非它仅包含Basic Latin范围内的字符(至U + 007F)。 Resgen.exe在处理使用ANSI编码保存的文本文件时会删除扩展的ANSI字符。

检查>文本文件的最简单方法是在Notepad中打开它,点击Save as...菜单中的File并查看&# 39;显示在右下角的Encoding下拉菜单中。它应设置为UTF-8Unicode

修复编码,只需在UTF-8的{​​{1}}对话框中选择UnicodeSave as...,然后按Notepad覆盖原始文件。