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

unicode寫入資料庫

答題得分者是:william
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-24 16:57:39 IP:61.221.xxx.xxx 未訂閱
大家好: 小弟測試unicode元件,但是到寫入資料庫中,就不是如想像中完美!!! with ADOQuery2 do begin  Close;  SQL.Clear;  SQL.Add('INSERT INTO aa (txt) VALUES('''+(TntEdit1.Text)+''')'); // SQL.Add('INSERT INTO aa (txt) VALUES(:q1)'); // Parameters.ParamByName('q1').Value:=TntEdit1.Text ;  ExecSQL; end; TntEdit 為unicode元件,可以在上面直接打  '堃' 但是寫入資料庫會變成  '?' 測試資料庫為ACCESS  欄位型態 '文字' UNICODE 編碼  '是' 請問是哪裡出錯,為何寫不進去access
------
======================
昏睡~
不昏睡~
不由昏睡~
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-24 17:50:40 IP:147.8.xxx.xxx 未訂閱
I don't have any experience with using unicode in DB 
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-25 11:33:41 IP:61.221.xxx.xxx 未訂閱
I have no idea yet!!    如果TStrings 沒有support unicode,那要如何使用 資料庫元件來設計程式,或者要用另類的方式 請給小弟一個意見!!
------
======================
昏睡~
不昏睡~
不由昏睡~
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-25 12:13:01 IP:61.221.xxx.xxx 未訂閱
william 大大: 如你說的,用ansi來做資料庫的存取,但是再access裡面的文字回變成30A01... 那用DBGrid就沒辦法直接看資料庫的東西.. 那要如何轉換阿!!! HELP...ME...THX
------
======================
昏睡~
不昏睡~
不由昏睡~
bookworm
中階會員


發表:63
回覆:161
積分:82
註冊:2002-08-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-28 22:21:36 IP:211.76.xxx.xxx 未訂閱
這個東西不知道對你有沒有幫助? http://www.delphi-unicode.net/Tools.php UDExtract is a command line tool to convert the Unicode character database and optionally additional files into a resource script which can be compiled by a resource compiler to a *.res file (a compressed version of this data is available via the links given above). The resource file can then be used in applications to access various character properties. The Unicode library on this page uses such a resource file for casing, decomposition etc. --- 從問中學 ^^
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-28 23:49:04 IP:210.3.xxx.xxx 未訂閱
Access 是用 unicode 的吧,你是用非中文 Windows 開發?小弟正是在英文 XP Pro (non-unicode locale 設成 BIG5) 開發,用 ADO 中文會變成亂碼,反而 BDE + ODBC 就沒有問題。但是 compile 好的 ADO 程式在中文 Windows (XP) 下是沒有亂碼的  所以建議將 > 如果真的想用 href="http://home.ccci.org/wolbrink/tnt/delphi_unicode_controls.htm">http://home.ccci.org/wolbrink/tnt/delphi_unicode_controls.htm
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-30 15:00:50 IP:61.221.xxx.xxx 未訂閱
謝謝bookworm兄的提供,但是這不只是unicode在程式上顯示的問題,還包含 了ado元件中sql語法輸入後端資料庫後是否正確的寫入unicode字型所以還 是有點麻煩, 關於william兄說的用bde溝通,小弟也試了 with Query1 do begin  Close;  SQL.Clear;  SQL.Add('INSERT INTO aa VALUES(:q1)');  ParamByName('q1').Value:=TntEdit2.Text ;  ExecSQL; end; 小弟是中文win,結果也是輸入堃--> 出現
------
======================
昏睡~
不昏睡~
不由昏睡~
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-30 15:07:11 IP:147.8.xxx.xxx 未訂閱
堃 
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-07-31 11:57:51 IP:61.221.xxx.xxx 未訂閱
william 你好:  
引言:大家好: 小弟測試unicode元件,但是到寫入資料庫中,就不是如想像中完美!!! LOOK ParamByName('q1').Value:=TntEdit2.Text ;
堃-->(& # 2 2 5 3 1 ;),在web中顯示的字碼 發表人 - ko 於 2003/07/31 12:15:11
------
======================
昏睡~
不昏睡~
不由昏睡~
bookworm
中階會員


發表:63
回覆:161
積分:82
註冊:2002-08-03

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-07-31 12:59:54 IP:140.122.xxx.xxx 未訂閱
我之前在做一個拼音的軟體時,是先直接在access table裡面keyin我要的東西,再將幾個欄位加以組合,成為我要的欄位。裡面的東西很多都是unicode的碼,用ado來做update跟insert都不是問題。所以我想問題在我使用的是從資料庫讀出欄位直接更新或插入,而你要用的是從TntEdit插入。所以問題會不會是出在Tnt Component上,不是在Ado上。小弟淺見,你再找找原因。 --- 從問中學 ^^
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-07-31 14:00:42 IP:61.221.xxx.xxx 未訂閱
ya!! 還是bookworm兄懂我的意思 是阿!! 就是在傳輸 >
------
======================
昏睡~
不昏睡~
不由昏睡~
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-07-31 14:49:11 IP:210.3.xxx.xxx 未訂閱
引言: ParamByName('q1').Value:=TntEdit2.Text ;
你用 >
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-07-31 16:59:20 IP:61.221.xxx.xxx 未訂閱
各位觀眾: 成功案例 ADO 使用方式  
引言: uses TntStdCtrls; type TForm1 = class(TForm) DataSource1: TDataSource; Button1: TButton; TntDBGrid1: TTntDBGrid; ADOQuery1: TADOQuery; TntEdit1: TTntEdit; ..... procedure TForm1.Button1Click(Sender: TObject); begin with ADOQuery1do begin Close; SQL.Clear; SQL.Add('INSERT INTO aa VALUES(:q1)'); Parameters.ParamValues['q1']:=TntEdit1.Text; ExecSQL; end; end;
失敗案例 BDE 使用方式
引言: // 當然元件加了 // Database1: TDatabase; // Query1: TQuery; procedure TForm1.Button1Click(Sender: TObject); begin with Query1 do begin Close; SQL.Clear; SQL.Add('INSERT INTO aa VALUES(:q1)'); ParamByName('q1').DataType:= ftWideString; ParamByName('q1').AsString :=TntEdit1.Text ; //ParamByName('q1').Value:=TntEdit1.Text ; ExecSQL; end; end;
註: TntEdit1.Text都是輸入 --> 堃 這個顧人怨的字.. 例外: 當用ADO透過ODBC連接,可以在TTntDBGrid顯示access中的unicode字型 but.. 用BDE透過ODBC連接,卻在TTntDBGrid中無法顯示unicode字型 這是為什麼呢? 小弟的
------
======================
昏睡~
不昏睡~
不由昏睡~
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-07-31 18:03:43 IP:210.3.xxx.xxx 未訂閱
BDE 應該要設定 LANGDRIVER 吧,小弟以前都是用 'ascii' ANSI,或者可試一下其他,但是 BDE 內部恐帕都是用 ansi string 吧 
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-07-31 18:22:06 IP:61.221.xxx.xxx 未訂閱
完了!! 錯誤訊息  Cannot edit LANGDRIVER  我的資料庫LANGDRIVER 欄是空的!! 可是我有設定驅動程式 Microsoft access (*.mdb) 為'ascii' ANSI 結果都一樣
------
======================
昏睡~
不昏睡~
不由昏睡~
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-07-31 20:01:45 IP:210.3.xxx.xxx 未訂閱
不是完吧,BDE 不成就用 ADO 吧 另外 >
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-08-04 10:09:03 IP:61.221.xxx.xxx 未訂閱
奇慘無比 小弟始終找不出, >
------
======================
昏睡~
不昏睡~
不由昏睡~
bookworm
中階會員


發表:63
回覆:161
積分:82
註冊:2002-08-03

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-08-04 12:19:53 IP:140.122.xxx.xxx 未訂閱
這邊有BDE的驅動,你可以選擇適合的版本試試。 http://delphi.ktop.com.tw/forum.asp?FORUM_ID=59 --- 從問中學 ^^
系統時間:2024-11-23 11:55:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!