11

首先 - 如果这个问题已经被回答了一百次,我很抱歉!哦!

但是我的 search-fu 显然很糟糕,因为我没有运气回答这个基本问题:

资源如何存储在 EXE/DLL 中?作为 UNICODE(UCS-2,Windows 原生内部字符格式),还是使用资源块的代码页作为多字节字符?

  • 如何将 UNICODE 字符串嵌入到资源 (.rc) 中?
  • 可以将 UNICODE (UCS-2) 文本从 VS 2012 中插入到语言字符串中吗?
  • Windows 是否仍在使用 UCS-2,还是在内部使用 UTF16?

我只是在寻找一般答案或详细信息的链接,而不是寻找将 UNICODE 字符串放入 .rc 字符串表的详细方法。谢谢!

4

3 回答 3

7

WIN32 中的所有资源字符串都编译为 Unicode。请参阅此处了解更多信息。.rc 脚本本身可以是 ANSI(使用本地代码页)或带有适当 BOM(参考)的 UCS-2。

于 2012-10-02T15:02:03.363 回答
3

如果有疑问,请查看十六进制。这里是 notepad.exe 的 rc 文件的开头,采用 UTF16 格式:

0002ed60  01 00 53 00 74 00 72 00  69 00 6e 00 67 00 46 00  |..S.t.r.i.n.g.F.|
0002ed70  69 00 6c 00 65 00 49 00  6e 00 66 00 6f 00 00 00  |i.l.e.I.n.f.o...|
0002ed80  a6 02 00 00 01 00 30 00  34 00 30 00 39 00 30 00  |......0.4.0.9.0.|
0002ed90  34 00 42 00 30 00 00 00  4c 00 16 00 01 00 43 00  |4.B.0...L.....C.|
0002eda0  6f 00 6d 00 70 00 61 00  6e 00 79 00 4e 00 61 00  |o.m.p.a.n.y.N.a.|
0002edb0  6d 00 65 00 00 00 00 00  4d 00 69 00 63 00 72 00  |m.e.....M.i.c.r.|
0002edc0  6f 00 73 00 6f 00 66 00  74 00 20 00 43 00 6f 00  |o.s.o.f.t. .C.o.|
0002edd0  72 00 70 00 6f 00 72 00  61 00 74 00 69 00 6f 00  |r.p.o.r.a.t.i.o.|
于 2012-10-02T15:00:22.200 回答
2

这里有一个很好的关于这个问题的文章。

资源编译器默认为 CP_ACP,即使面对文件是 UTF-8 的微妙提示 https://devblogs.microsoft.com/oldnewthing/20190607-00/?p=102569

于 2022-02-16T07:38:51.570 回答