1. 程式人生 > >汪雨田的專欄----c語言,演算法設計,php,linux,mysql

汪雨田的專欄----c語言,演算法設計,php,linux,mysql

       最近遇到一個在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