MSVC 2010和UTF8

时间:2016-02-07 03:35:29

标签: c++ sqlite utf-8

ALL,

我正在使用MSVC 2010作为我的项目和SQLite的最新代码。

根据SQLite文档,查询字符串应编码为UTF-8。

正如其他一些主题所示,我尝试使用u8“”前缀。

但是,我收到一条错误,“u8”无法识别:'u8':未声明的标识符

所以,现在有2个问题:

  1. 仅限u8 C ++ 11吗?

  2. 如何让我的项目识别u8前缀?

  3. 谢谢。

2 个答案:

答案 0 :(得分:0)

u8字符串前缀实际上是C ++ 11或更高版本。

但是,除非您的字符串文字实际上包含非拉丁字符U+0x0080及更高字符,否则它没有任何区别。

答案 1 :(得分:0)

Visual C 2010似乎不支持这些前缀。您应该能够在文字中包含UTF-8字符串,因为它们不会违反以null结尾的字符串的规则。字符串函数可能有些奇怪,它们可以处理UTF-8字符串,但是它们会将它们解释为单字节序列而不是UTF-8字符,因此比较,大小写转换和赢得#39 ; t工作与预期相符。您需要更新版本的Visual Studio才能完全解决问题。

另外,检查#pragma execution_character_set("utf-8")的效果。它只能在Visual Studio中以C ++形式提供,因此您可能必须将C源文件编译为C ++才能访问它。