※ 引述《[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 ◆