c ++中的sqlite3 unicode支持

时间:2015-04-23 17:19:19

标签: c++ sqlite

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

感谢。

1 个答案:

答案 0 :(得分:0)

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

SQLite永远不会更改字符串中的字节。 数据库包含字节fa e6,因为它是原始字符串s的内容。

您必须确保您的源代码文件以UTF-8编码,或者将字符串从其实际编码显式转换为UTF-8。