从 utf-16 到 ascii 的 C# 编码
本文关键字:编码 ascii utf-16 | 更新日期: 2023-09-27 18:32:43
我在程序输出中得到问号:?????? ??????
string str = "Привет медвед";
Encoding srcEncodingFormat = Encoding.GetEncoding("utf-16");
Encoding dstEncodingFormat = Encoding.ASCII;
byte [] originalByteString = srcEncodingFormat.GetBytes(str);
byte [] convertedByteString = Encoding.Convert(srcEncodingFormat,
dstEncodingFormat, originalByteString);
string finalString = dstEncodingFormat.GetString(convertedByteString);
Console.WriteLine (finalString);
没有文本,只有编码文本。但。如您所知,NET 的字符和字符串使用 Unicode/UTF-16。因此,您可以通过调用 GetBytes 并传入字符串来简化代码,而不是像代码那样执行两次。
至于您的问题,您可以选择有损转换或根本不转换。下面是防止有损转换的代码。
现在,如何查看结果?与所有文本一样,它是一个字节序列。最好的办法是将它们写入文件,然后在编辑器中打开该文件,您可以指示编码,并且可以使用支持要查看的字符的字体。
string str = "Привет медвед";
Encoding dstEncodingFormat = Encoding.GetEncoding("US-ASCII",
new EncoderExceptionFallback(),
new DecoderReplacementFallback());
byte[] output = dstEncodingFormat.GetBytes(str);
File.WriteAllBytes("Test Привет медвед.txt", output);