RichBox或TXTbox不显示UTF-8字符

时间:2016-12-18 19:37:19

标签: c# .net utf-8

我正在创建一个程序,将文件的所有字节转换为纯文本(以UTF-8编码),当我想在RichBox或Textbox上显示文本时出现问题,它只显示/写入一个几个字符或没有字符。当文件仅包含unicode简单字符(拉丁字母)和数字

时,不会出现此问题

这是我的代码:

richTextBox1.Text = System.Text.Encoding.UTF8.GetString(File.ReadAllBytes(FilePath));

为什么会这样? ,这是VB中的一个错误,还是我的错?任何形式的帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您可能想尝试我目前正在使用的C#解决方案:

byte[] bytes = { 130, 200, 234, 23 }; // A byte array contains non-ASCII (or non-readable) characters

string s1 = Encoding.UTF8.GetString(bytes); // ���
byte[] decBytes1 = Encoding.UTF8.GetBytes(s1);  // decBytes1.Length == 10 !!
// decBytes1 not same as bytes
// Using UTF-8 or other Encoding object will get similar results

string s2 = BitConverter.ToString(bytes);   // 82-C8-EA-17
String[] tempAry = s2.Split('-');
byte[] decBytes2 = new byte[tempAry.Length];
for (int i = 0; i < tempAry.Length; i++)
    decBytes2[i] = Convert.ToByte(tempAry[i], 16);
// decBytes2 same as bytes

string s3 = Convert.ToBase64String(bytes);  // gsjqFw==
byte[] decByte3 = Convert.FromBase64String(s3);
// decByte3 same as bytes

string s4 = HttpServerUtility.UrlTokenEncode(bytes);    // gsjqFw2
byte[] decBytes4 = HttpServerUtility.UrlTokenDecode(s4);
// decBytes4 same as bytes

只需将语法调整为VB.NET,它就相当简单......