convert utf-8 string to Persian unicode
下面的字符串是utf-8。我想把它转换成波斯语Unicode:
1 | ?§?¨?±?§?2 ?ˉ?§?′?a: ?§ù…?§ù… ?±???§ ?¨?±???§ù?ù? ?ˉ??úˉ?± ?§?|ù…ù? ?¨?§ ??ù?úˉ ù??±ù… |
此站点正确进行转换,结果是:?????????????:???????????????????????????????????????????
我测试了很多方法和方法,但不能解决这个问题,例如这两行没有产生预期的结果:
1 | string result = Encoding.GetEncoding("all type").GetString(input); |
和
1 2 3 4 5 6 7 | byte[] preambleBytes= Encoding.UTF8.GetPreamble(); byte[] inputBytes= Encoding.UTF8.GetBytes(input); byte[] resultBytes= preambleBytes.Concat(inputBytes).ToArray(); string result=Encoding.UTF8.GetString(resultBytes.ToArray()); string resultAscii=Encoding.Ascii.GetString(inputBytes); string resultUnicode=Encoding.Unicode.GetString(inputBytes); |
我通过阅读什么是问题和解决方案来理解什么是问题。
当我将字符串转换为byte[]时,我强制将其转换为utf-8格式,但实际上我应该使用默认格式进行转换。
1 2 3 | False converting: byte[] bytes = Encoding.UTF8.GetBytes(inputString); resultString = Encoding.UTF8.GetString(bytes); |
但是
1 2 3 | True converting: byte[] bytes = Encoding.Default.GetBytes(inputString); resultString = Encoding.UTF8.GetString(bytes); |
你的评论和回答。
您可以使用encoding.convert。
1 2 3 4 | string source = // Your source byte[] utfb = Encoding.UTF8.GetBytes(source); byte[] resb = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("ISO-8859-6"), utfb); string result = Encoding.GetEncoding("ISO-8859-6").GetString(resb); |
注:我不确定你想要哪种标准,所以我用的例子是ISO-8859-6(阿拉伯语)。
我通过utf8获取字节,默认情况下获取字符串,如下所示。这对我很有用。
1 2 | byte[] bytes = Encoding.UTF8.GetBytes(inputString); resultString = Encoding.Default.GetString(bytes); |