我使用SQLite3来实现小型应用程序来读取或写入数据库。需要添加到数据库的一些记录是阿拉伯文本,当它们存储到数据库时,它们转换为不可读和不可理解的文本。我使用这些API进行写入&读:
我该怎么做才能解决问题?
答案 0 :(得分:1)
您的文本很可能是非ASCII编码。例如,在unicode中。
这是因为ASCII表只有0到127之间整数表示的字符。所以没有什么可以用来表示阿拉伯字母。例如,Unicode使用五种不同的范围来表示阿拉伯语:
由于可能有更多字母/字符,8位值(char
类型,长度为1字节)允许,宽字符用于表示某些(或甚至全部)那些信件。
因此,字符串中的字符串长度将不同于字符串的长度(以字节为单位)。我的假设是当你使用sqlite3_bind_text
函数时,你传递了许多字符作为第四个参数,而它应该是一个字节数。或者,当您从数据库中读取字符串时,您可能会错误地解释此长度。 sqlite3_bind_text
文档说明了第四个参数:
在具有第四个参数的那些例程中,其值是数字 参数中的字节数。要清楚:值是数字 值中的字节数,而不是字符数。如果是第四个 参数为负数,字符串的长度是字节数 直到第一个零终止符。
确保你在那里做正确的事。
另见:
祝你好运!