On Sat, May 22, 2010 at 05:27:24AM -0700, shion scratched on the wall:
> 
> Hello,
> 
> I already found a lot of threads about the UTF16 topic, but I couldn't solve
> my problem.
> I have the following source code:
> 
> sqlite3_open_v2("test.sqlite", &Database, SQLITE_OPEN_READWRITE |
> SQLITE_OPEN_CREATE, 0);
> sqlite3_exec(Database, "PRAGMA encoding = \"UTF-16\"", 0, 0, 0);
> sqlite3_prepare16_v2(Database, L"CREATE TABLE user (userID INTEGER NOT NULL
> PRIMARY KEY, lastName VARCHAR(50), firstName VARCHAR(50));", -1,
> &pStatement, 0);
> std::cout << sqlite3_errmsg(Database) << std::endl;
> 
> The result is:
> near "C": syntax error

  Compile or runtime?  Runtime, I assume.

> I know that the SQL syntax is correct and it is possible to execute that
> source under windows.
> I don't understand why it doesn't work with Linux.
> Does somebody has an idea what's going wrong?

  Wide characters are 32 bits on most non-Windows platforms.  When
  passed to a 16 bit system, the first character of L"CREATE..." is
  seen as ['C', '\0'].

    http://en.wikipedia.org/wiki/C_syntax#Wide_character_strings

  This is part of the reason SQLite3 uses void* rather than wchar_t*
  for UTF-16 strings.

   -j

-- 
Jay A. Kreibich < J A Y  @  K R E I B I.C H >

"Intelligence is like underwear: it is important that you have it,
 but showing it to the wrong people has the tendency to make them
 feel uncomfortable." -- Angela Johnson
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to