赞
踩
小编典典
在.Net中,一旦有了一个字符串, 便有了一个字符串 ,并且它 始终 是Unicode
。实际的内存实现是UTF-16,但这并不重要。永远不要将字符串分解为字节,并尝试将其重新解释为不同的编码,然后将其拍回为字符串,因为这样做没有意义,并且几乎总是会失败。
您的问题是这一行:
currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));
我将其分成几行来说明:
byte[] bytes = Encoding.UTF8.GetBytes("ی"); //bytes now holds 0xDB8C
byte[] converted = Encoding.Convert(Encoding.Default, Encoding.UTF8, bytes);//converted now holds 0xC39BC592
string final = Encoding.UTF8.GetString(converted);//final now holds ی
该代码将混淆127 ASCII屏障以上的所有内容。删除重新编码行,您应该会很好。
旁注,很可能任何创建字符串的操作都会错误地进行,实际上并不太常见。但是您需要先解决该问题, 然后
再string在byte级别上解决该问题。
编辑
该代码应与上面的代码完全相同,只是应删除一行。另外,无论您使用什么显示文本,请确保其支持Unicode。另外
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。