我已經編寫了一個將SQL Server錶轉換爲SQLite表的程序。這是一個使用ADO(COM)從SQL Server檢索數據的C++程序,以及C SQLite接口(由我自己的C++類包裝)。SQLite字符轉換
在SQL Server中,我有一個有內容的字段的記錄:
哈根達斯
(即第一個具有兩個點以上的話)。我通過ADO讀取該字段,並將其從BSTR轉換爲char *,然後將其綁定到SQLite INSERT語句。當我在SQLiteSpy(和其他工具)中查看這個字段時,我看到該字段顯示爲'HAGEN DAZS'。
在調試器中,我可以看到Ä是字符0xc4,這是該字符的正確UTF-8表示形式。看來,SQLite是重整我的 'A'
這是我的SQLite CREATE TABLE語句:
CREATE TABLE Company ([Lookup] CHAR (30))
這是我的SQLite的INSERT語句:
INSERT INTO Company ([Lookup]) VALUES (?)
我從所提供的BSTR轉換ADO轉換爲char *使用此函數調用:
WideCharToMultiByte(CP_ACP,0,In_,-1,Out_,MaxLen_,0,0);
這是我的SQLite綁定語句:
sqlite3_bind_text(Statement,1,Text_,-1, (BindFunction) SQLITE_TRANSIENT);
我在,在這一點上,Text_是「哈根達斯」,而A字真的在0xc4證實調試。
關於這裏發生了什麼的任何想法?
你是對的,我沒有注意到我的圖表上的X84。 – 2010-11-01 19:57:25