1

您可能还记得,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 代码。所以,如果前面的步骤是正确的,我的问题是:如何将 U+hhhh 代码放入 c++ 中的 wchar_t?
4

1 回答 1

3

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

wchar_t output_char = input_char;

然后你可以把wchar_ts 放到你想写的地方。

于 2013-04-24T20:37:37.653 回答