我的程序输出中出现问号:?????? ??????
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);
答案 0 :(得分:0)
没有文字,只有编码文字。但是,正如您所知,.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);