我编写了一个 C++ 程序来从 MS-Active Directory 中检索一些文本数据并将它们保存到 Sqlite3 数据库中,但是我有一个问题,即 utf-8 编码。
根据一些读数,来自活动目录的数据是 UTF-8 编码的,但是当从 C++ 读取时,它被视为 Sqlite3(默认为 utf-8)不接受为 UTF-8 的“宽字符”(wchar_t),因为它只在其“sqlite3_bind_text”的参数中使用“char”,除非我使用 sqlite3_bind_text16,但我不希望这样做,因为它会增加数据库的大小。
我尝试使用函数“wcstombs_s”将“wchar_t”转换为“char”,但结果数据不正确。
我读到唯一的方法是使用 MultiByteToWideChar 或 WideCharToMultiByte,但我没有尝试,因为我读到转换成本非常昂贵。
我想知道你们中是否有人遇到过类似的情况,并为这个问题找到了一个干净有效的解决方案。
非常感谢!