UTF8 и UTF16 преобразование - PullRequest
       32

UTF8 и UTF16 преобразование

1 голос
/ 20 апреля 2010

У меня есть строка wchar_t, например, L "hao123-- 我 的 上网 主页", я могу преобразовать ее в utf8

кодирование, строка вывода "hao123 3, 紞 鎴 鎴 殑 涓 涓 綉 涓 婚 婚〉", но, наконец, я должен написать это

строка в текстовом файле, его формат - utf16 (я знаю это по другим), "hao123 \ uFF0D \ u6210 \ u7684 \ u4E0A \ u7F51 \ u4E3B \ u9875".

Поскольку я должен сохранить его в строке C ++ std, а затем записать его в файл, Как я могу преобразовать

"hao123 to 嶏 紞 鎴 戠 殑 涓 婄 綉 涓 婚〉" в "hao123 \ uFF0D \ uFF0D \ u6211 \ u7684 \ u4E0A \ u7F51 \ u4E3B \ u9875" в строке типа char или C ++?

Кто-нибудь может дать мне несколько советов?

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 31 марта 2011

В C ++ 11 это можно сделать с помощью:

#include <locale>
#include <codecvt>
#include <string>
#include <iostream>

int main()
{
    std::wstring_convert<std::codecvt_utf16<wchar_t> > myconv;
    std::wstring ws(L"hao123--\x6211\x7684\x4E0A\x7F51\x4E3B\x9875");
    std::string bs = myconv.to_bytes(ws);
    std::cout << bs << '\n';
}
0 голосов
/ 22 апреля 2010

Я написал о функции преобразования самостоятельно, для получения дополнительной информации, пожалуйста, посетите C ++ Unicode UTF-16 кодировка

...