c++ - 如何在 Borland C++ Builder 6 中将字符串从 cp1250 转换为 utf-8

标签 c++ utf-8 c++builder

我维护一个用 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/

相关文章:

c++ - 在 C++ 中扩展库

php - obj c 和 php 错误的字符串编码

python - 如何使用 mysql.connector 从 MySQL 返回 str?

c++ - 带有 C++ 生成器的 CUDA

c++ - vcl.h : No such file or directory

c++ - 以编程方式找出 openCL 设备支持的最大工作组大小

c++ - 在 OS X 上将 SDL2 与 CLion 结合使用

python - 如何将 Python 中的双 UTF-8 解码器代码转换为 Lua

c++ - 如何在 C++ Builder 中从 TADOQuery 扩展一个类?

c++ - 如何修复 opencv 的慢 kmeans