为什么SQLite的C / C ++ API返回unsigned char *s如与更事实上的char *类型?文本值

此在某种程度上关系到的无符号字符问题,不同之处在于SQLite的API的决定似乎常规的相对char *建议给出了带状的值。

例如:

const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
有帮助吗?

解决方案

SQLite的文档

  

(H13821)的sqlite3_column_text(S,N)界面将结果转换设置了准备的语句S带入零结尾的UTF-8字符串的当前行中的第N列和指针返回到该字符串。

UTF-8想要字节值范围从0x00到0xFF。炭的范围可以从-0x80到0x7F(签名)或为0x00〜0xFF(无符号)。强制无符号允许UTF-8字符串的正确的编码。

其他提示

在胡乱猜测我会说,它是与支持UTF-8编码。符号字符值仅作在7位ASCII环境,这里的一切0x7F的上方是开放的解释意义。在0x00到0xFF的之间UTF-8一切都可以同等地使用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top