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

时间:2010-01-28 10:16:38

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

我维护一个用Borland C ++ 6编写的应用程序。这个应用程序使用的是SQLite数据库。

我现在正在扩展它,因此它可以被非特权用户使用,因此我不得不将数据库文件移动到home用户目录。不幸的是,一些用户的名字中有波兰国家字符,例如ą,ć,and等等。系统代码页是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表示中?

1 个答案:

答案 0 :(得分:2)

我找不到C ++ Builder的文档(Borland页面上的链接似乎已被破坏),但我记得,你可以直接从AnsiString转换为WideString。

获得UTF-16字符串后,可以使用WideCharToMultiByte Windows函数,将CP_UTF8作为参数传递。