今天在調試的時候挺尿,出現(xiàn)的打開注冊表的時候奏黑,SubKey為中文或特殊符號時,返回2票髓,它的路徑是存在的攀涵,并且也沒有重定向的問題(在打開方式的時候已經(jīng)判斷了),所以想洽沟,應該是字符編碼的問題,emmmm蜗细,具體是不是這樣明天上班去試一下就知道了裆操。
先看一下關于字符編碼的問題(以下來自Windows核心編程):
ANSI
由一個字節(jié)表示符號,也就是256個符號炉媒,這不足以表示所有的字符踪区,比如漢字,這就要用到雙字節(jié)字符集了吊骤。
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個字節(jié))表示一個字符)
UTF-16
Windows提供的API
Windows提供的API參數(shù)包含字符串的传泊,通常會有兩個版本,W版本和A版本鸭巴。W版本是接受Unicode字符串的(寬字符16位寬);A版本接受ANSI字符串眷细。在使用時一定要看好自己的字符串里面究竟包含了什么樣的內容,選擇合適的版本鹃祖。