精華區beta Programming 關於我們 聯絡資訊
※ 引述《[email protected] (睡魔)》之銘言: > ※ 引述《cloud318 (cloud318)》之銘言: > : 我在 C 裡面輸入中文字 他會以Big5的方式存成 2 byte的數字 > : 如 0xb3af (陳) 可是我想轉成 Unicode的字碼 (0x9673) > : 請問有人知道該怎麼處理嘛? > 1) 在Linux下有libiconv可用 > 2) VB/.NET中有StrConv()可用 > 3) 有裝Windows DDK的話, 可以在 WinDDK\6000\tools\print 找到 > ucs2bg5.map文件, 第一行是UCS2, 第二行是Big5 如果是用 MS 的編譯器的話 一開始就使用 wchar_t 作為文字型態來存 內容就是 Unicode 了 ( 就是文字前面加個 L prefix 啦,這是正常的語法 不過 gcc 看我用 L"陳" 編譯時就吐錯誤說: "Illegal byte sequence" 不知道編譯時是否要特別加上參數來處理中文... ) 取得和處理使用者輸入的函式,也都用 wprintf,wscanf,wcsXXX,... 就可以了 而且那些至少也還是標準函式 畢竟要跨平台的話,用 _mbXXX 非標準系列恐怕會被限定住 用 VC 實際測一下之後 猜想是原 po 一開始是用 char* 表示中文字 (使用 "陳" 而非 L"陳") 所造成的 而編譯器對不同型態文字所採用的編碼也就不同 #include <stdio.h> int main(){ unsigned short value[] = { *(unsigned short*)L"陳", // L"陳" : 原本是 wchar_t * *(unsigned short*)"陳" // "陳" : 原本是 char * }; printf("use wchar_t : 0x%X\n", value[0]); printf("use char : 0x%X\n", value[1]); return 0; } ====== output ====== use wchar_t : 0x9673 use char : 0xAFB3 -- , 秘密情人 (bbs.cse.ttu.edu.tw) ~\ Post From: 61-228-209-196.dynamic.hinet.net