全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2681
推到 Plurk!
推到 Facebook!

SQL Server 的 Database 如何使中文與越南文並存?

尚未結案
NeoMayer
一般會員


發表:5
回覆:9
積分:2
註冊:2002-03-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-24 11:01:26 IP:203.162.xxx.xxx 未訂閱
因為在越南的公司工作,公司原有的 ERP 系統是中文的,無法輸入越南文。 想要自己寫外掛,使用 Delphi 5,用 TNT 系列的 VCL ,果然可以輸入越南文;    但是當下 Insert into AAA Values (N'không')時,再 Select 出來就不是那麼一回事,會變成全部是英文 'khoang' ,把欄位設成 NChar 更慘,在 >
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-24 16:29:06 IP:203.95.xxx.xxx 未訂閱
hi, 由於 adoquery 的 sql command 僅 support string, 而非 widestring, 導致你寫入資料庫前的 command 就已經失去 unicode 的編碼, 解決的方法是使用參數方式寫入資料庫, 如,    
begin
  // ...
  
  ADOQuery1.SQL.Text := 'insert into AAA Values (:mydata)';
  ADOQuery1.Parameters.ParamByName('mydata').DataType := ftWideString;
  ADOQuery1.Parameters.ParamByName('mydata').Value := TntEdit1.Text;
  ADOQuery1.ExecSQL;
end;
NeoMayer
一般會員


發表:5
回覆:9
積分:2
註冊:2002-03-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-24 17:47:08 IP:203.162.xxx.xxx 未訂閱
感謝大大的指點,我知道是怎麼一回事了,可是小弟是用 TQuery 的元件,卻又怎麼解決呢?我的意思是,如何不用傳入參數,而可以使 SQL.Text 可以為 widestring, 而非 string。謝謝! 發表人 - neomayer 於 2004/09/24 17:51:41
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-09-25 10:44:34 IP:61.62.xxx.xxx 未訂閱
1. SQL.Text 的格式就是 string, 不是 WideString, 所以沒有辦法直接使用 command 來寫入 WideString, 因此弟才會建議你使用參數來寫入資料庫. 2. TQuery 元件, BDE 的這組是不支援 Unicode 的, 所以即使是使用了 WideString 參數亦無法順利寫入, 建議你改用 ADO 這組!!
NeoMayer
一般會員


發表:5
回覆:9
積分:2
註冊:2002-03-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-09-25 11:30:23 IP:203.162.xxx.xxx 未訂閱
感謝大大的指點,小弟遵從大大的建議,改用 ADOQuery 去寫,不過還是跟之前一樣< >,到底是哪裡做錯?< > 我連結用 ODBC 或用 ADO 直接連都試過了,輸入法用 VNI-key 或用微軟內建的 VN 輸入法,也試過了。資料庫方面,把欄位改成 NChar、vietnamese 也沒有用耶,存進去的還是只有英文字而已。有時則會有 ? 問號出現,但是無法
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-09-25 12:08:31 IP:61.62.xxx.xxx 未訂閱
和資料庫的預設語系無關, 只要將欄位改為 nchar, nvarchar, ntext 型態即可順利存入, 請問你所謂[存進去的還是只有英文字而已]是由哪個地方看的呢? 是用 sql analyzer 嗎? 另外你在輸入時使用的是 Tnt 元件嗎? 若不是的話, 在 form 上的值就可能已經有問題了, 不過應該是已使用了 Tnt 元件了沒錯吧, 請你確認一下, 利用 sql analyzer 看資料庫中的值是否正確.
NeoMayer
一般會員


發表:5
回覆:9
積分:2
註冊:2002-03-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-09-28 11:14:36 IP:203.162.xxx.xxx 未訂閱
小弟是用 SQL Analyzer 直接進去 Database 看的沒錯。如果從 word 上直接輸入越南文字串,把他剪貼到 SQL Server 中,是可以儲存的。在 TTntdbgrid 中也可以看到。但是用大大您說的方法,仍然無法順利將越南文存入。 <>< face="Verdana, Arial, Helvetica">引言: 和資料庫的預設語系無關, 只要將欄位改為 nchar, nvarchar, ntext 型態即可順利存入, 請問你所謂[存進去的還是只有英文字而已]是由哪個地方看的呢? 是用 sql analyzer 嗎? 另外你在輸入時使用的是 Tnt 元件嗎? 若不是的話, 在 form 上的值就可能已經有問題了, 不過應該是已使用了 Tnt 元件了沒錯吧, 請你確認一下, 利用 sql analyzer 看資料庫中的值是否正確.
NeoMayer
一般會員


發表:5
回覆:9
積分:2
註冊:2002-03-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-09-28 12:06:24 IP:203.162.xxx.xxx 未訂閱
感謝 timhuang 大大的解答!小弟終於得到解答了!之前小弟用 Delphi 5 測試怎麼試都不行,後來改用 Delphi 7 就可以了!
系統時間:2024-06-29 11:19:35
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!