1 将Unicode字符转换为\uxxxx转义字符

实现效果:

将:

你好

转换为:

u4f60\u597d

的形式。

1.1 C++代码

#include <iostream>
#include <sstream>
#include <iomanip>

std::string ConvertWStringToUnicodeEscape(const std::wstring& unicode_str)
{
    std::wstring unicode_str_copy = unicode_str;
    std::stringstream ss;
    for (std::wstring::iterator iter = unicode_str_copy.begin(); iter != unicode_str_copy.end(); ++iter)
    {
        if (*iter <= 127)
            ss << (char)*iter;
        else
            ss << "\\u" << std::hex << std::setfill('0') << std::setw(4) << (int)*iter;
    }

    return ss.str();
}

int main()
{
    std::wstring inputStr = L"你好世界,helloworld";

    std::string unicode_str = ConvertWStringToUnicodeEscape(inputStr);

    std::cout << unicode_str << std::endl;

    return 0;
}

运行结果:

C++ – 将Unicode std::wstring字符串转换为Unicode std::string转义字符,类似于\uxxxx的形式-StubbornHuang Blog

随便找一个在线Unicode中文互转网站,测试一下:

C++ – 将Unicode std::wstring字符串转换为Unicode std::string转义字符,类似于\uxxxx的形式-StubbornHuang Blog

转换结果是对的。