从 utf8 转换为 latin1 时某些字符出错
Error in some characters for convert from utf8 to latin1
我使用以下代码将 UTF8(波斯语字符)转换为 LATIN1。
但它不适用于某些字符,例如 (و و ه)
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(source);
string des = iso.GetString(utfBytes);
Latin1 更倾向于拉丁字母表(如果你只针对那个就很好)并且 UTF8 可以表示 any Unicode 字符集,不仅是西欧国家,而且东欧人。
大多数字符是相同的,但也有一些差异。看一下 UTF8 and Latin1.
的字符集
I use below code for convert UTF8 (Persian characters) to LATIN1.
ISO-8859-1 不能包含波斯语字符。你正在做的是故意制造 mojibake 错误。
如果您的代码正在做一些功能性的事情,这意味着有一些其他组件从 des
获取输出并错误地处理它(即输出它作为拉丁式编码,而它本来应该是使用 UTF-8)。如果可以的话,最好在下游解决该问题,而不是尝试使用故意错误的编码来解决它。
如果您真的必须以这种方式处理它,并且某些字符有效而其他字符无效,则可能是您尝试定位的类拉丁编码实际上不是真正的 Latin-1 (ISO-8859- 1);最可能的原因是它是 Windows 代码页 1252。这与 ISO-8859-1 共享许多相同的字符映射,但不是全部。所以试试 GetEncoding(1252)
.
我使用以下代码将 UTF8(波斯语字符)转换为 LATIN1。
但它不适用于某些字符,例如 (و و ه)
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(source);
string des = iso.GetString(utfBytes);
Latin1 更倾向于拉丁字母表(如果你只针对那个就很好)并且 UTF8 可以表示 any Unicode 字符集,不仅是西欧国家,而且东欧人。 大多数字符是相同的,但也有一些差异。看一下 UTF8 and Latin1.
的字符集I use below code for convert UTF8 (Persian characters) to LATIN1.
ISO-8859-1 不能包含波斯语字符。你正在做的是故意制造 mojibake 错误。
如果您的代码正在做一些功能性的事情,这意味着有一些其他组件从 des
获取输出并错误地处理它(即输出它作为拉丁式编码,而它本来应该是使用 UTF-8)。如果可以的话,最好在下游解决该问题,而不是尝试使用故意错误的编码来解决它。
如果您真的必须以这种方式处理它,并且某些字符有效而其他字符无效,则可能是您尝试定位的类拉丁编码实际上不是真正的 Latin-1 (ISO-8859- 1);最可能的原因是它是 Windows 代码页 1252。这与 ISO-8859-1 共享许多相同的字符映射,但不是全部。所以试试 GetEncoding(1252)
.