2

我正在将应用程序从 Windows 移植到 Linux。除了数据库之外,我已经设法使一切正常工作。每当我打电话sqlite3_column_text16()时,我都会得到一个缺少大多数字符的字符串。我不知道这种行为从何而来,因为它在 Windows 上运行得无可挑剔。

我没有做任何特别的事情,只是

wstring a(static_cast<wchar_t const *>(sqlite3_column_text16(stmt, 2)));

谢谢你。

4

1 回答 1

1

Unicode 字符可以超过 16 位,因此除 Windows 之外的所有操作系统都使用 32 位类型的wchar_t.

您可以从 UTF-16 转换为 UTF-32(注意代理对),但取决于您的程序的设计方式,在任何地方都使用 UTF-8 可能更容易。

于 2013-03-15T08:56:15.773 回答