1

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

resources.sv-se.restext

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

输出

在此处输入图像描述

获取资源的代码:

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

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

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

更新:

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

4

1 回答 1

2

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

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

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

修复编码,只需在对话框中选择UTF-8或点击覆盖原始文件。UnicodeSave as...NotepadSave

于 2016-02-02T12:10:01.310 回答