我需要获取TCHAR的Unicode值。
e.g。如果TCHAR =" A",我想找到0x41的Unicode值。
转换为int是安全的,还是我应该使用的API函数?
答案 0 :(得分:4)
你的问题有点不正确。 TCHAR
可以是8位或16位字符。就其本身而言,仅知道角色的宽度是不够的。您还需要知道它是如何编码的。例如:
MultiByteToWideChar
的UTF-16。 UTF-16元素的数值是Unicode代码点。 因此,为了继续,你必须清楚你的角色是如何编码的。
在做这之前你需要知道它有多宽。 TCHAR
可以是8位或16位,具体取决于您的编译方式。这种灵活性是我们如何处理Win 9x和Win NT的单一源代码开发。前者没有Unicode支持。现在,Win 9x很幸运地被遗忘了,TCHAR
也是如此。遗憾的是,它存在于无数的MSDN示例中,但您应该忽略它。在Windows上,本机字符元素为wchar_t
。
答案 1 :(得分:1)
嗯,我猜你想要UTF-32号码
Arx已经说过,TCHAR
可以是char
或wchar_t
。
如果你有一个char
字符串,它可能包含数据
使用系统的默认单字节字符集(UTF-8
也是可行的)
处理许多不同的字符集很困难
Windows内置了转换内容:
使用MultiByteToWideChar
获取wchar_t
- 数组的char
数组。
如果您有一个wchar_t
- 数组,那么Windows上很可能是UTF-16
(LE,没有BOM ...)。
我不知道任何内置函数来获取UTF-32
,
但是编写自己的转换并不是那么难(否则,使用一些lib)
http://en.wikipedia.org/wiki/UTF-16
有些小小的摆弄,但仅此而已。
(TCHAR
是预处理器的东西,
所以你可以实现不同的行为
基于#define
也是如此。或sizeof
或......)