我使用下面的代码将UTF8(波斯字符)转换为LATIN1。
但它不适用于某些角色,如(ویه)
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(source);
string des = iso.GetString(utfBytes);
答案 0 :(得分:1)
我使用下面的代码将UTF8(波斯字符)转换为LATIN1。
ISO-8859-1不能包含波斯语字符。你正在做的是故意犯mojibake错误。
如果您的代码正在执行某些功能,则意味着有一些其他组件从des
获取输出并对其进行错误处理(即,当它本来应该使用UTF时,将其输出为类似拉丁语的编码-8)。如果你可以,那么将问题解决到下游会好得多,而不是试图通过故意编码来解决它。
如果你真的必须以这种方式处理它,并且有些角色可以工作,但是其他角色没有,可能是你试图瞄准的类似拉丁语的编码实际上并不是真正的拉丁语-1(ISO-8859- 1);最可能的原因是它是Windows代码页1252.它与ISO-8859-1共享许多相同的字符映射,但不是全部。所以试试GetEncoding(1252)
。
答案 1 :(得分:0)