函式
size_t wcstombs(char *dest, const
wchar_t *src, size_t n); //wide-character to a multibyte
n:被寫入到 str 中的最大位元組數
size_t mbstowcs(wchar_t *dest, const
char *src, size_t n); //multibyte to wide-character
n:被轉換的最大字元數
char *setlocale(int category, const
char *locale);
設定當前程式使用的本地化資訊
locale:語言**_國家**.編碼。比如(zh_cn.utf-8, en_us)
int wprintf(const wchar_t *format, ...);
int fwprintf(file *stream, const wchar_t *format, ...);
int swprintf(wchar_t *wcs, size_t maxlen,
const wchar_t *format, ...);
舉例
char *str = "你好嗎";
setlocale(lc_all, "en_us.utf8");
wchar_t wbuf[64] = ;
int size = mbstowcs(wbuf, str, strlen(str));
printf("size = %d\n", size);
printf("wbuf = %ls\n", wbuf);
//wprintf(l"%s\n",wbuf); //printf二選一
# ./a.out
size = 3
wbuf = 你好嗎
wchar_t *wstr = l"我很好";
setlocale(lc_all, "en_us.utf8");
char buf[64] = ;
int size = wcstombs(buf, wstr, sizeof(buf));
printf("size = %d\n", size);
printf("buf = %s\n", buf);
# ./a.out
size = 9
buf = 我很好
寬位元組 多位元組 單位元組 的問題
感覺比較混亂,學習了一通,做個記錄。著急在windows下面用的話,可以先看這個 vc windows 平台字元透明程式設計大總結 寬字串與單位元組字串之間的轉換。c 標準裡面已經提供了 寬位元組轉單位元組 size twcstombs char mbstr constwchar t wcstr s...
多位元組與寬位元組之間的轉換
1 函式 widechartomultibyte 轉換 unicode 到 mbcs。lpcolestr lpw l hello,你好 size t wlen wcslen lpw 1 寬字元字元長度,1表示包含字串結束符 int alen widechartomultibyte 第一次呼叫,計算所...
windows下多位元組和寬位元組轉換
先簡單說下什麼是多位元組和寬位元組。多位元組是指使用多個位元組 1 3 表示乙個字元。比如gbk使用英文佔乙個位元組,中文佔2個,這個就是多位元組了。utf 8是使用1 3個位元組表示字元。還有big5等等。寬位元組一般是固定使用2個位元組表示乙個字元,utf 16 一般就是指unicode 1 m...