感覺比較混亂,學習了一通,做個記錄。
著急在windows下面用的話,可以先看這個:
vc++ windows
平台字元透明程式設計大總結
寬字串與單位元組字串之間的轉換。
c++標準裡面已經提供了:
寬位元組轉單位元組
:size_twcstombs(char*mbstr
,constwchar_t*wcstr
,size_t
count
);
單位元組轉寬位元組
:size_tmbstowcs(wchar_t*wcstr
,constchar*mbstr
,size_t
count
);
只能乙個乙個的轉換,也就是說一次只能轉換乙個字元
微軟的函式
寬位元組轉多位元組
:widechartomultibyte
多位元組轉寬位元組
:multibytetowidechar
寬字串 轉換為 char字串 的例子。
bstr devname; //olewchar 其實就是wchar
char *name=null;
pncp->get_name(&devname);
dwordn=widechartomultibyte(cp_oemcp,null,devname,-1,null,0,null,false);
name=new char[n];
widechartomultibyte(cp_oemcp,null,devname,-1,name,n,null,false);
cout將 char字串 轉換為 unicode字串,也就是寬字元。
char stext[20] = ;
dword dwnum = multibytetowidechar (cp_acp,0, stext, -1, null, 0);
wchar_t *pwtext;
pwtext = new wchar_t[dwnum];
multibytetowidechar (cp_acp, 0, pwtext, -1,stext, dwsize);
if(!pwtext)
delete pwtext;
unicode和多位元組字符集 (mbcs) 雜談
位元組碼問題--wchar和char的區別以及wchar和char之間的相互轉換字元編碼轉換等方法及函式介紹
該文看的出來非常的用心的總結了。而他附錄的幾個內容也是可供學習的:
網上不錯的資源:
c/c++ 程式設計中多國語言處理
徹底解密c++寬字元:1、從char到wchar_t
徹底解密c++寬字元:2、unicode和utf
徹底解密c++寬字元:3、利用c執行時庫函式轉換
徹底解密c++寬字元:4、利用codecvt和use_facet轉換
徹底解密c++寬字元:5、利用fstream轉換
徹底解密c++寬字元:6、國際化策略
c 原始檔內的中文(1)
c 原始檔內的中文(2)
utf-8 and unicode faq for unix/linux
寬位元組 多位元組 mbstowcs wcstombs
函式 size t wcstombs char dest,const wchar t src,size t n wide character to a multibyten 被寫入到 str 中的最大位元組數 size t mbstowcs wchar t dest,const char src,s...
VS2008多位元組與單位元組問題
在vs2008中使用sprintf遇到問題 tchar name 20 char sql 20 getdlgitem idc name getwindowtext name,20 sprintf sql,s name 程式執行後在sql怎麼也只能得到乙個字元,將name改為cstring型別同樣有此...
多位元組與寬位元組之間的轉換
1 函式 widechartomultibyte 轉換 unicode 到 mbcs。lpcolestr lpw l hello,你好 size t wlen wcslen lpw 1 寬字元字元長度,1表示包含字串結束符 int alen widechartomultibyte 第一次呼叫,計算所...