請問UTF8編碼的字串怎麼加入Access中 |
缺席
|
lindavid
一般會員 發表:3 回覆:3 積分:1 註冊:2007-03-02 發送簡訊給我 |
請教各位大大:
小弟這邊有一份純文字(.txt)檔,是UTF8編碼的,我想把他的內容讀到Access中,因為其內容有簡體字以及其他國文字,所以用UTF8但是一但加到Access中,如果是直接用UTF8Stream的word或是char的szData全部會變成亂碼,經過Decode的WideStream則是繁體中文 英文 符號可顯示但是其他(例如簡體字)都會變成'?'。 <textarea class="cpp" rows="10" cols="60" name="code">char szData[500]; UTF8String word; WideStream word_0; TMemoryStream *fp = new TMemoryStream(); fp->LoadFromFile(filename); for( i=0 ; i<0 ; i ) { k=0; do{ fp->Read( &szData[k], 1 ); k ; }while(szData[k-1] != '\n'); szData[k-1]='\0'; //word = szData;//若是直接用這個變數丟給SQL語法則全部都是亂碼 word_0 = UTF8Decode(szData); ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add("INSERT INTO test (文字) VALUES('" word_0 "')"); ADOQuery1->ExecSQL(); ADOQuery1->Close(); </textarea><br /> 我原本在猜想應該是UTF8Decode出來的東西不吃簡體字,所以發狠招用了下面的來做測試 <textarea class="cpp" rows="10" cols="60" name="code">WideString wa = (WideString)WideChar(0x0028); //為( WideString wb = (WideString)WideChar(0x81EA); //為自 WideString wc = (WideString)WideChar(0x52A8); //為动 WideString wd = (WideString)WideChar(0x6B65); //為步 WideString we = (WideString)WideChar(0x67AA); //為枪 ADOQuery1->SQL->Add("INSERT INTO test (文字) VALUES('" lang "','" wa wb wc wd we "')"); </textarea> 但是這樣在Access上就會變成 (自?步? 所以又有可能是sql語法再傳遞的時候 不吃UTF8 想請問各位大大有解決辦法嗎? 或是不要透過ADOQuery的SQL來加入資料到access又可以吃UTF8(簡體/各國語言)的方法 萬分感激 編輯記錄
taishyang 重新編輯於 2007-07-30 20:16:06, 註解 將文章分類成[問題]‧
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
1.你的 Office 是多少版的? 我只知道2003 以後的 Access 資料欄為是絕對支援 Unicode 的。
2.C Builder 的 VCL 元件是不支援 Unicode , 請使用 TTntUniCode Controls。 http://www.tntware.com/delphicontrols/unicode/downloads.htm不過現在好像要賣錢了,快去網路上搜尋一下之前免費的版本吧! 3.內建的ADO物件當然也不支援Unicode,也請至http://www.tntware.com/delphicontrols/unicode/downloads.htm下載 TTntEx,然後所有的存取變數與VCL元件全部改用 WideString與TTntUnicodeCtrols即可達到你的要求。 |
lindavid
一般會員 發表:3 回覆:3 積分:1 註冊:2007-03-02 發送簡訊給我 |
您好
我office的版本是2000的 ^^" 可是手動複製阿拉伯文再貼上也可以正常顯示,所以應該不會是這邊的問題 另外您提到有關vcl元件的變成支援unicode的更新,可是我昨天晚上自己又渾然試了一下 如果用UTF8Decode解出來的WideString型態 寫回另一個記事本上面也可以正常顯示耶 (雖然我沒更新unicode補完計畫或是其他元件)。 所以可能真的是SQL丟參數的時候的問題 想再請問一下BCB中的AODQuery中的SQL語法還能更新成支援utf8或是unicode嗎 不然就要用另外的方式連結結資料庫了(我只會用AODQuery ^^"..) 感激不盡 |
yang2066
一般會員 發表:2 回覆:3 積分:6 註冊:2005-07-14 發送簡訊給我 |
|
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
> 可是手動複製阿拉伯文再貼上也可以正常顯示
不要完全相信 "複製" "貼上" 的測試 , 它可能會幫您依照情況轉碼 做個小測試 1.用 Notepad.exe 輸入 "中文" 兩字, 存成 Unicode 檔案 (假設稱為 c.txt), 關閉 Notepad 2.執行 UltraEdit (小弟用 13.00 1 版, 太舊版不支援 UniCode) 3.執行 Notepad, 開啟 c.txt , 複製 "中文" 兩字, 貼到 UltraEdit 中, 按下 Ctrl-H 看編碼 4.用 UltraEdit 開啟 c.txt , 按下 Ctrl-H 看編碼 5.您會發現兩者編碼不同
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |