如何在C / C ++(cpp)中将ASCII保存为Unicode(UTF-16LE)?

时间:2013-04-24 20:33:51

标签: c++ unicode ascii utf-16le

您可能还记得,Windows记事本在“另存为...”功能中具有编码功能:ASCII(默认),UTF-8,Unicode和Big Endian。 我需要创建一个程序,该程序使用ASCII .txt文件的文本进行扫描,并将结果保存为Unicode .txt文件。

  • 我搜索时,这里的Unicode表示UTF-16LE(没有BOM)。如果我错了 - 请纠正我。
  • 我尝试从ASCII读取为char并将其逐个转换为wchar_t - 成功,但我有UTF-8而不是UTF-16LE。我就是这样做的:

    int result = (int)input_char; //input_chat is char from ASCII 
    while(result<0) result+=256;
    wchar_t output_wchar = wchar_t(result);
    

此代码工作文件,不会丢失任何ASCII符号。

  • 我也知道UTF-16LE编码为U + hhhh代码。所以,如果前一步是正确的,我的问题是:如何在c ++中将U + hhhh代码放到wchar_t中?

1 个答案:

答案 0 :(得分:3)

如果您的源是ASCII并且wchar_t的大小为2个字节,并且您处于小端系统(我认为这是一个安全的猜测),那么除了隐式转换之外什么都没有。

wchar_t output_char = input_char;

然后你可以把wchar_t s炸成你想写的地方。