欄位被編碼過,如何反推成原字串 |
答題得分者是:ddy
|
thomas0728
中階會員 ![]() ![]() ![]() 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
|
ddy
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
|
thomas0728
中階會員 ![]() ![]() ![]() 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
不,我的意思是說欄位內的資料只要是中文部份都會是編碼過的
英文與數字倒沒有
所以我認為它是把一個中文字先折成低位元組與高位元組,在轉成 acssi 碼直接存入,問題我現在不知如何把一個中文字分成高低位元,以前好像看過是用
hi() 及 lo() 但我試了試它告訴我型態不對,如 hi('昱'),lo('昱')
如果可以的話再用 ord() 或 chr() 之類的轉成 ascii 碼
另外我以前看過一篇文章好像可從前後二個位元組判斷出是不是中文字,還是一般正常的 acsii 碼,好像是錢達智的文章,不過他的網站好像已關了,上不去
不知有人是否記得 邱明昇
------
Thomas Chiou |
ddy
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
參考這篇吧,可判斷出是否為中文字
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20403
另將中文字分成高低位元如下:(lo / hi 接受的參數型態是integer,要先用ord)
var s:WideString; p:string; i:Integer; begin p:=''; s:='這是測試'; for i:=0 to Length(s)-1 do p:= IntToStr(lo(ord(s[i]))) IntToStr(hi(ord(s[i]))) ; end;發表人 - ddy 於 2002/08/16 23:48:28 |
thomas0728
中階會員 ![]() ![]() ![]() 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
謝謝你的熱心忙
問題已更接近解決的邊緣了
但我還是有些地方有點迷惑
比如說判斷是否為中文字串的範例中
for i:=1 to length(ws) do
begin
s:=s ws[i] ',';
end;
為何起始條牛是 1 不是 0
另外我採用你教的方法去分解中文字的高低位元組得到的是
Var
s:widestring;
p:string;
i:integer;
begin
p:='';
s:='昱';
for i:=0 to Length(s)-1 do
p:= IntToStr(lo(ord(s[i]))) IntToStr(hi(ord(s[i]))) ;
showmessage(P);
end;
不論用那一個中文字得到的都是 00
widestring 這個型態的用法是否還有我該注意的方
再一次謝謝你熱心的幫忙 邱明昇
------
Thomas Chiou |
ddy
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
引言: for i:=1 to length(ws) doindex 由1開始的原因是index 0 是不使用的, index 0 在ShortString 裡是存放字串的長度 我覺得delphi是考量shortstring/ansistring/widestring的相容,所以第一個字才會從index 1開始 引言:Sorry 這個是我的疏忽 :p ( 唉~~vb在我心裡做怪>< ) 就如同上面所提的,index 0 是不用的,所以內容值是0 請把for i:=0 to Length(s)-1 do改成 for i:=1 to Length(s) do 即可^^ 噓~~~~~~沉思中… 發表人 - ddy 於 2002/08/18 17:48:20Var s:widestring; p:string; i:integer; begin p:=''; s:='昱'; for i:=0 to Length(s)-1 do p:= IntToStr(lo(ord(s[i]))) IntToStr(hi(ord(s[i]))) ; showmessage(P); end; 不論用那一個中文字得到的都是 00 |
thomas0728
中階會員 ![]() ![]() ![]() 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |