2011-12-08 27 views

回答

1

爲什麼沒有sqlite3_mprintf16()函數?

因爲SQLite尚未被UTF-16感染。它幾乎在界面的任何地方都使用UTF-8,所以用UTF-16字符串編碼查詢格式是沒有意義的。

我需要'%q'功能,但對於UTF-16字符串。

這是一個不同的故事。你需要的是類似'%q16'的東西,實際上它不存在。

說的是,你根本不應該使用sqlite3_mprintf。改用準備好的語句並綁定函數。他們確實允許您使用sqlite3_bind_text16綁定UTF-16字符串。更好,stop using UTF-16 for your strings

+0

我知道UTF-16的問題。我的任務是將舊版本的某個Windows應用程序的插件(使用char *作爲字符串)移植到新的應用程序(它在任何地方都使用wchar_t *),以便將所有字符串從UTF-16轉換爲UTF-8,反之亦然。但是你是對的 - 我必須使用準備好的陳述。 – tilex

+2

SQLite *是*「受UTF-16感染」。它有'sqlite_open16','sqlite3_prepare16'等。 – dan04

相關問題