我有一个严格使用 Unicode 函数和数据类型的 C++ native WinAPI 应用程序。即,CreateWindowW()、SendMessageW()、wstring、WCHAR 等。现在我打算扩展我的应用程序以使用 SQLite3。
我的问题:SQLite3 库是 ANSI。这意味着我必须使用 char*
作为大多数函数参数。
在 Unicode 应用程序中使用 ANSI 函数是否有任何限制或负面影响?
如果有这些影响可能是什么?
最佳答案
SQLite 不限于 ANSI。认为 char*
暗示 ANSI 编码文本是一种误解。并非所有对 char*
数据进行操作的函数都假定数据是 ANSI 编码的。对于 SQLite,它完全支持 Unicode,并且使用使用 UTF-8 编码的 char*
数据来支持。
如果您打算继续在您的应用程序内部使用 UTF-16 编码文本,您需要在您的代码和 SQLite 代码之间的边界添加一个适配器层。将数据传递给 SQLite 时从 UTF-16 转换为 UTF-8,接收时则相反。
在我看来,您提出的问题有点没有实际意义,但我还是会解决这个问题:
Are there any limitations or negative impacts from using ANSI Functions in a Unicode Application?
使用 ANSI 函数最明显的缺点是:
- 严格限制字符集。
- 在不同字符集之间转换时的性能成本。
- 由于在单个代码库中使用多个字符集而导致程序员混淆和错误的风险。
关于c++ - 在 Unicode 应用程序中使用 ANSI 函数是否有任何限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17008905/