我已经编写了一个将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