關於VS2015 字符集采用Unicode時出現的問題


使用unicode字符集編碼的時候總是會提示,這里不對,那里也不對,由於嫌麻煩,就直接把字符集改成寬字符集。

但是感覺,這樣永遠也無法理解unicode的字符集的使用。

UNICODE:它是用兩個字節表示一個字符的方法。比如字符'A'在ASCII下面是一個字符,可'A'在UNICODE下面是兩個字符,高字符用0填充,而且漢字'程'在ASCII下面是兩個字節,而在UNICODE下仍舊是兩個字節
。UNICODE的用處就是定長表示世界文字,據統計,用兩個字節可以編碼現存的所有文字而沒有二義。
  MBCS,它是多字節字符集,它是不定長表示世界文字的編碼。MBCS表示英文字母時就和ASCII一樣(這也是我們容易把MBCS和ASCII搞混的原因),但表示其他文字時就需要用多字節。  

那咱們也來初窺一下unicode字符集里的錯誤解決方案:

1、LPTSTR  

  L ---Long

  P  ---Pointer

  T --- 宏,用於指示是否使用unicode字符集

  C ------表示常量

  STR-----表示字符串

LPTSTR、LPCSTR、LPCTSTR、LPSTR的意義:
LPSTR:32bit指針 指向一個字符串,每個字符占1字節
LPCSTR:32-bit指針 指向一個常字符串,每個字符占1字節
LPCTSTR:32-bit指針 指向一個常字符串,每字符可能占1字節或2字節,取決於Unicode是否定義
LPTSTR:32-bit指針 每字符可能占1字節或2字節,取決於Unicode是否定義

在中文系統環境下如果啟用了Unicode支持,LPTSTR代表的是WCHAR *

 

2、在啟用了Unicode字符集的時候,如果遇到參數不能從const char * 轉為LPCWSTR的情況下,

  1)可以更改字符集

  2)字符串使用_T("")表示 char 換成TCHAR

  3) 頭文件包含#include<tchar.h> 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM