C++ 中的 sqlite3 Unicode 支持


std::ostringstream oss;
std::string s="תז";
oss << "insert into t values(" << s << ");"
this->sql = oss.str();    
rc = sqlite3_exec(c,this->sql.c_str(), callback, 0 , &zErrMsg);

this->sql.c_str()包含 UTF-8 字符,则在执行此行后,如果插入的数据是 unicode,则数据库中的此数据将损坏(每个字符一个字节而不是两个字节)。如何添加 Unicode 支持?

我想将תז写入数据库,写入数据库的字节数为:fa e6需要写入的内容:d7 aa d7 96

谢谢。

UTF-8 是一种可变长度编码。ASCII 字符每个字符使用一个字节;其他人使用两到四个字节。

SQLite 从不更改字符串中的字节。数据库包含fa e6字节,因为这些字节是原始字符串s的内容。

必须确保源代码文件以 UTF-8 编码

,或将字符串从其实际编码显式转换为 UTF-8。

最新更新