我维护一个用 Borland C++ 6 编写的应用程序。这个应用程序使用 SQLite 数据库。
我现在正在扩展它,以便非特权用户可以使用它,所以我不得不将数据库文件移动到主用户目录。不幸的是,一些用户的名字中包含波兰民族字符,例如 ą、ć、ę 等等。系统代码页是 cp1250,但 SQLite 要求我传递一个 utf-8 编码的路径。
所以,基本上我需要转换一个 cp1250 编码的路径:
String path = "c:\documents and settings\User Name like Zażółć gęślą Jaźń\Application Data\...\MyDb.sqlite"
为utf-8,然后用path.c_str()传递给sqlite;
C++ 构建器是否有任何类来转换字符集,或者我应该只将波兰国家字符代码的短集映射到它们的 utf-8 表示形式?
最佳答案
我找不到 C++ Builder 的文档(Borland 页面上的链接似乎已损坏),但据我所知,您可以直接从 AnsiString 转换为 WideString。
一旦有了 UTF-16 字符串,就可以使用 WideCharToMultiByte Windows 函数,将 CP_UTF8 作为参数传递。
关于c++ - 如何在 Borland C++ Builder 6 中将字符串从 cp1250 转换为 utf-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2153711/