资源文件是编译为UNICODE还是ANSI代码页?

时间:2012-10-02 14:56:46

标签: c++ winapi dll resources rc

首先 - 如果已经回答了一百次,我很抱歉! D'哦!

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

  

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

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

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

2 个答案:

答案 0 :(得分:7)

WIN32中的所有资源字符串都编译为Unicode。有关详细信息,请参阅here。 .rc脚本本身可以是ANSI(使用本地代码页)或UCS-2以及相应的BOM(reference)。

答案 1 :(得分: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.|