お世話になります。
VC++でsqliteのデータを読み込むプログラムを作成していますが、
sqlite3_prepare_v2の引数でSQL文はUTF-8で渡す必要があります。
SQL文に日本語が含まれない場合は、問題ないのですが、カナでデータ抽出したい場合に困っています。CStringはデフォルトだとユニコードとなるようです。
CStringAに変えてみましたがうまくいきませんでした。
CStringでUTF-8を使用するにはどのようにしたらよいでしょうか?
よろしくお願いします。
VC++(VS2017)
1CString sql; 2sql = "select cd, aaa, kana from hoge where aaa is not null"; 3sql = sql + " and kana like 'ゴ%'" 4sqlite3_prepare_v2(pDB, sql, -1, &pStmt, NULL);
OKなソース
1const char* sqlUTF8 = u8"select cd, aaa, kana from hoge where aaa is not null and kana like 'ゴ%'"; 2sqlite3_prepare_v2(pDB, sqlUTF8, -1, &pStmt, NULL);
■追記 以下のようにCT2Aで変換してみてもダメでした(データが抽出されない)
CString sql; sql = "select cd, aaa, kana from hoge where aaa is not null"; sql = sql + " and kana like 'ゴ%'" CT2A aaa(sql, CP_UTF8); sqlite3_prepare_v2(pDB, aaa.m_psz, -1, &pStmt, NULL);
定義
SQLITE_API int sqlite3_prepare_v2(
sqlite3 db, / Database handle. */
const char zSql, / UTF-8 encoded SQL statement. /
int nBytes, / Length of zSql in bytes. */
sqlite3_stmt *ppStmt, / OUT: A pointer to the prepared statement */
const char *pzTail / OUT: End of parsed string */
)

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/15 11:13
2019/02/15 12:48
2019/02/18 02:20
2019/02/18 04:16 編集