1. 程式人生 > >ReadString在UNICODE下中文亂碼的解決辦法(CHS)

ReadString在UNICODE下中文亂碼的解決辦法(CHS)

用CStdioFile類中的ReadString()方法可以從檔案中讀取一行,但是在Unicode下,讀取的內容有誤,同時也無法將中文利用WriteString()寫入檔案。原因就在於讀取檔案時是按照 ascii 方式讀取的,而直接設定字串時,是按照unicode 方式讀取的。

若使得讀取檔案時按照 Unicode 方式讀取,則需要新增:

setlocale( LC_CTYPE, "chs" ); 其對應的標頭檔案為 <locale.h>

配置地域化資訊函式

#include <locale.h>

char *setlocale (int category, const char * locale);

函式種類: 作業系統與環境 內容說明: 本函式用來配置地域的資訊,設定當前程式使用的本地化資訊。引數 category 有下列的選擇: LC_ALL 包括下面的全部選項都要。 LC_COLLATE 配置字串比較,PHP 目前尚未實作出來本項。 LC_CTYPE 配置字元類別及轉換。例如全變大寫 strtoupper()。 LC_MONETARY 配置金融貨幣,PHP 目前尚未實作。 LC_NUMERIC 配置小數點後的位數。 LC_TIME 配置時間日期格式,與 strftime() 合用。 而引數 locale 若是空字串 "",則會使用系統環境變數的 locale 。若 locale 為零(NULL),則不會改變地域化配置,返回當前的地域值,若系統尚未實作則返回 false。 返回相應設定的地域化資訊。字串可能分配在靜態儲存區。