Как преобразовать строку из cp1250 в utf-8 в Borland C ++ Builder 6 - PullRequest
1 голос
/ 28 января 2010

Я поддерживаю приложение, написанное на 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, и затем передать его в sqlite с помощью path.c_str ();

Есть ли в C ++ Builder какой-либо класс для преобразования кодировок или я должен просто сопоставить короткий набор кодов польских национальных символов с их представлениями utf-8?

1 Ответ

2 голосов
/ 28 января 2010

Я не смог найти документацию для C ++ Builder (ссылки на странице Borland, кажется, не работают), но, насколько я помню, вы можете напрямую конвертировать из AnsiString в WideString.

Если у вас есть строка UTF-16, вы можете использовать WideCharToMultiByte Функция Windows, передавая CP_UTF8 в качестве параметра.

...