今天在调试的时候,出现的打开注册表的时候,SubKey为中文或特殊符号时,返回2,它的路径是存在的,并且也没有重定向的问题(在打开方式的时候已经判断了),所以想,应该是字符编码的问题,emmmm,具体是不是这样明天上班去试一下就知道了。
先看一下关于字符编码的问题(以下来自Windows核心编程):
ANSI
由一个字节表示符号,也就是256个符号,这不足以表示所有的字符,比如汉字,这就要用到双字节字符集了。
char c = 'a';
typedef char CHAR;
typedef CHAR *PCHAR;
typedef CHAR *PSTR;
typedef CONST CHAR *PCSTR;
Unicode
wchar_t c = L'a';
typedef wchar_t WCHAR;
typedef WCHAR *PWCHAR;
typedef WCHAR *PWSTR;
typedef CONST WCHAR *PCWSTR;
使用TEXT可以将字符串转换为所需要的ANSI或Unicode
UTF-Unicode转换格式
UTF-8
UTF-16(常用)用16位表示字符,无法表示的某些字符,它支持代理。(代理:用32位(4个字节)表示一个字符)
UTF-16
Windows提供的API
Windows提供的API参数包含字符串的,通常会有两个版本,W版本和A版本。W版本是接受Unicode字符串的(宽字符16位宽);A版本接受ANSI字符串。在使用时一定要看好自己的字符串里面究竟包含了什么样的内容,选择合适的版本。