線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1274
推到 Plurk!
推到 Facebook!

中文字碼的問題

尚未結案
wentsung
一般會員


發表:9
回覆:3
積分:2
註冊:2003-10-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-27 03:21:05 IP:211.76.xxx.xxx 未訂閱
請問各位前輩:     要如何將中文字轉成Unicode,並且顯示在Edit元件上?                                        謝謝無私的指教
yangshengfa
一般會員


發表:1
回覆:16
積分:3
註冊:2003-09-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-27 06:38:00 IP:218.169.xxx.xxx 未訂閱
不太清楚你的『要如何將中文字轉成Unicode,並且顯示在Edit元件上?』是什麼意思? 試試下列的程式碼是否對你有所幫助
    WideString ws = "中文";
    Edit1->Text = ws;
Borland C Help : WideString represents strings of 16-bit characters.
wentsung
一般會員


發表:9
回覆:3
積分:2
註冊:2003-10-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-27 08:30:08 IP:211.76.xxx.xxx 未訂閱
回覆yangshengfa前輩:     您好,我的意思是要怎樣在螢幕上看到中文字的unicode長什麼樣子? 謝謝您的回覆
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-27 09:41:52 IP:203.73.xxx.xxx 未訂閱
引言: 回覆yangshengfa前輩: 您好,我的意思是要怎樣在螢幕上看到中文字的unicode長什麼樣子? 謝謝您的回覆 < face="Verdana, Arial, Helvetica"> wnetsung你好< >: 剛好最近也在研究這方面的東東,但是這些問題似乎並不新穎,早有研究了< >! http://delphi.ktop.com.tw/topic.php?TOPIC_ID=46495 axsoft版主寫的,和你的需求一樣,參考看看吧! 用
wentsung
一般會員


發表:9
回覆:3
積分:2
註冊:2003-10-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-27 11:34:27 IP:211.76.xxx.xxx 未訂閱
回覆m8815010 版主 :     謝謝您的指引讓我有所獲得,對於黃權燊先生的程式仍有部份程式碼 不甚了解,請版主再一次不吝指教,謝謝: 1.MultiByteToWideChar(CP_ACP,0,text1,-1,szWchar,254); 2.WideCharToMultiByte(CP_ACP,0,w_text2,-1,text1,254,0,0);    MultiByteToWideChar(); WideCharToMultiByte(); 這兩個函是不是C++的內建函式(因為使用"Help"找不到) 又函式內的參數各代表什麼意思 最後"CP_ACP"是代表什麼意思?    黃權燊先生撰寫之程式碼: void __fastcall TForm1::Button1Click(TObject *Sender) { wchar_t szWchar[255], w_text2[255]; char text1[255], text2[255], text3[5], text4[5]; int a,b,c,d,e; int wa,wb,wc;    StrPCopy(text1,Edit1->Text); b=strlen(text1); // 如果 Edit1 有內容 if(b>0){ // 計算中英文及數字的個數 c=0; d=0; for(a=0;aText=text2; }} // 如果 Edit1 沒有內容, 就讀入 Edit2 else{ StrPCopy(text1,Edit2->Text); b=strlen(text1); // 把16進制數碼轉換成十進制數碼, 及計算字數 wc=0; e=0; for(a=0;a47&&c<58) wb=c-48; else wb=16; if(wb<16){ text4[wc ]=wb; if(wc==4){ // 轉換成數值, 高位元在後, 低位元在前 wa=text4[0]*16 text4[1] text4[2]*16*16*16 text4[3]*16*16; // widechar 有如整數 w_text2[e ]=wa; wc=0; }} } // 轉換成 ASCII 字串 WideCharToMultiByte(CP_ACP,0,w_text2,-1,text1,254,0,0); b=strlen(text1); c=0; d=0; // 讀取中英文及數字的個數 for(a=0;aText=text1; }
yangshengfa
一般會員


發表:1
回覆:16
積分:3
註冊:2003-09-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-27 19:17:30 IP:218.169.xxx.xxx 未訂閱
如果你是要知道ASCII 轉換成 Unicode編碼的方法,m8815010 版主已提供參考範例,如果只是要知道 Unicode的編碼,參考這個範例:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    WideString ws;
    ws = Edit1->Text;
    Memo1->Lines->Clear();
    for (int i=0; iLines->Add("0x"   IntToHex(ws[i 1], 4)   ", "   IntToStr(ws[i 1])   "U");
}
發表人 - yangshengfa 於 2004/03/27 19:19:50
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-28 13:43:32 IP:218.173.xxx.xxx 未訂閱
引言: 回覆m8815010 版主 : 謝謝您的指引讓我有所獲得,對於黃權燊先生的程式仍有部份程式碼 不甚了解,請版主再一次不吝指教,謝謝: 1.MultiByteToWideChar(CP_ACP,0,text1,-1,szWchar,254); 2.WideCharToMultiByte(CP_ACP,0,w_text2,-1,text1,254,0,0);
wentsung你好< >: 有看到你的回應,但實在是沒時間回覆< >! 你說的那兩個function是Win API的function,要查的話我還是建議直接Builder中Help-->Window SDK 裏面去查比較快,當然msdn也行啦!那你自已先看說明吧,有問題再說! 另外Builder也有將這兩隻改寫成自已的function,叫: StringToWideChar WideCharToString 這兩隻就可以在Builder的help中找到了! yangshengfa說的應該合用了! 嗯,如果你要中文字轉成 href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=46228">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=46228 That's all! 發表人 -
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-03-29 14:00:09 IP:140.135.xxx.xxx 未訂閱
wentsung 您好: PO程式碼的方式請參考版規說明 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=46593 煩請修改, 謝謝您的配合
系統時間:2024-05-18 20:31:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!