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

Big5 內碼顯示問題

缺席
juneo
高階會員


發表:103
回覆:190
積分:118
註冊:2004-05-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-04-20 22:04:40 IP:111.243.xxx.xxx 訂閱
請教各位大大
我有一個字串 AnsiString ST = "a7daac4f414243 ";
我如何能夠在Memo1上顯示出"我是ABC"?

我有考慮用Big to unicode 然後再轉回big5
但是感覺很多此一舉,想請問有人知道怎麼把big5內碼字串轉成 文字輸出。

對照表也想過,不過用for去找好像會很慢

[code cpp]
AnsiString asUCode = "a7da";
wchar_t wcUCode[2];
wcUCode[0] = StrToInt("0x" asUCode);
wcUCode[1] = 0;
WideString wsCHT = wcUCode;
Button1->Caption = wsCHT;
[/code]



編輯記錄
juneo 重新編輯於 2011-04-20 08:28:57, 註解 無‧
juneo
高階會員


發表:103
回覆:190
積分:118
註冊:2004-05-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-04-21 01:44:41 IP:111.243.xxx.xxx 訂閱
自問自答

http://delphi.ktop.com.tw/board.php?cid=30&fid=76&tid=26356

http://delphi.ktop.com.tw/board.php?cid=30&fid=76&tid=26815

【Delphi】【發表】中文字 <-----> Big5 互換範例 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26815
【Delphi】【分享】將字碼轉換至文字http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26356


[code cpp]
int a = StrToInt("0xa7");
int b = StrToInt("0xf5");

char s[3];
s[0]=a; s[1]=b;
Memo1->Lines->Add(String(s[0]) String(s[1]));
Memo1->Lines->Add(String(s));
Memo1->Lines->Add(s);

[/code]

再貼上完整的程式,當作備份

[code cpp]

void __fastcall TForm1::Button1Click(TObject *Sender)
{
int a = StrToInt("0xa7");
int b = StrToInt("0xf5");

char s[3];
s[0]=a; s[1]=b;
Memo1->Lines->Add(String(s[0]) String(s[1]));
Memo1->Lines->Add(String(s));
Memo1->Lines->Add(s);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
AnsiString SS = "
\'a7\'f5\'ac\'4f\'ba\'d1-1",ST;
ST = Big5ToString(SS,"\'");
Memo1->Lines->Add("ST: " ST);
Memo1->Lines->Add("-----------------------");

TStringList *SD = new TStringList();
SD->LoadFromFile("Big5Data.txt");
for (int i=0;iCount ;i )
{
SS = SD->Strings[i].Trim();
Memo1->Lines->Add("SS: " SS);
ST = Big5ToString(SS,"\\\'"); //因為\' 在讀取檔案後變成 \ and ' ,所以用特殊字符 \ 來區隔
Memo1->Lines->Add("ST: " ST);
}
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::Big5ToString(AnsiString Str, AnsiString Dels)
{
//Big5 Code To Char
AnsiString SS,ST;
int pos1 = -1,Len=Dels.Length();
char tmp[256]={NULL};
int p=0;
do {
pos1 = Str.Pos(Dels);
if (pos1 > 0)
{
Str.Delete(pos1, Len);
SS = Str.SubString(0,2);
//Memo1->Lines->Add("Str: " Str);
//Memo1->Lines->Add("SS: " SS);
tmp[p] = StrToInt("0x" SS);
p ;
pos1 = Str.Pos(SS);
Str.Delete(pos1, SS.Length());
}
} while (pos1 !=0 );
return String(tmp) Str;
}
//---------------------------------------------------------------------------

[/code]


編輯記錄
juneo 重新編輯於 2011-04-27 05:47:49, 註解 無‧
juneo 重新編輯於 2011-04-27 05:51:54, 註解 無‧
系統時間:2024-04-19 9:09:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!