汪雨田的專欄----c語言,演算法設計,php,linux,mysql
阿新 • • 發佈:2019-01-07
最近遇到一個在C語言當中處理中文的問題,因為漢字和ascii不同,漢字是多位元組編碼方式,ascii只用一個位元組表示,所以在用c語言提供的strlen函式得到的長度是位元組長度; 以下都是utf-8編碼方式,為了得到一個字元(漢字和ascii)有幾種處理方式:
1. 自己寫程式判斷是否為漢字,通過第一個位元組判斷,以下是我寫的一部分程式碼;
2. 用內建的wchar_t型別 ,
1). wchar_t ws[]=L"北京bus";
這樣用wcslen(ws)結果就為 5,
這是必須設定 本地編碼方式 setlocale(LC_ALL,"zh_CN.UTF-8");
2).讀一個檔案後得到的資料,要使資料為wchar_t ,就需要進行字串轉換了.用到函式 mbstowcs,以下是我寫的一個讀文字文 件然後轉換的程式
如果 wchar_t 轉換為char 型別,可以用函式 wcstombs