2011-10-16 51 views
2

有人在电子邮件寄给我的信是这样如何修复Unicode字母?

IVIØR†€™

正确的应该是

IVIØR†€™

假设是 如何代表他们在原来的葡萄牙人的langauge,之后得到了改变通过HTTP GET请求传递。

我可能无法修复该网站..但也许创建一个修复工具来修复这些破碎的编码字母?或任何人知道任何修复工具?或者如何手工操作?似乎没有什么是丢失..只是严重解释

回答

4

这里发生的事情是,UTF-8被误解为ISO-8859-1;然后其他类型的损坏(错误的ISO-8859-1字符串被重新编码为UTF-8;非破坏性空间字符'\ xA0'被转换为常规空间'\ x20')似乎在之后发生,尽管这些可能只是将它粘贴到Stack Overflow的结果。

由于后续的损坏,没有真正好的方法来完全撤销它,但是您可以通过将其传递给非常严格的UTF-8解释器来撤消它。例如,如果我在计算机上使用“记事本”和“ANSI”(单字节)编码将“IVI?R”,“?”保存为文本文件,然后在Firefox中打开它,告诉它将其解释为UTF-8(Firefox> Web Developer>字符编码> Unicode(UTF-8)),然后显示“IVIØR ”。 (“ ”是因为'\ xA0'已被改为'\ x20',这打破了UTF-8编码。)

+0

哇谢谢..任何想法?我如何修复网站以正确地转换一切? 'html_entities'?或东西 – SSpoke

+0

这是一个网站或电子邮件?该网站应该发送一个标题以及指定UTF-8的数据(但如果不是,则默认为latin1) - 如果这是一封电子邮件,则基本上是相同的。如果这是一个webmail站点,底层站点“软件”应该将电子邮件转换为与webmail页面相同的编码,作为呈现页面的一部分,并发送适当的标题。也就是说,我使用了盲目忽略字符编码的网络邮件客户端,特别是在我的学校使用的Emumail会破坏每个UTF-8电子邮件。 – Thanatos

+0

@Thanatos你能帮我解决这个问题吗? “巴克”在这一个腐败?网站有''但它什么也没做。 – SSpoke

0

他们可能不会破碎。这只是他们发送的编码与您正在查看的解码之间的区别。

找出最初使用的编码是什么,并使用相同的编码来解码它,它应该看起来像原版的。在编写“修复”工具方面,您总是需要知道它们最初创建的编码,根据来源的不同,这些编码可能会很复杂,以及您是否有权访问上述信息。

+0

嗯..所以这是他们身边的浏览器故障?问题通过他的次要电子邮件感谢上帝解决,正确的是'IVIØR'''''他说PayPal显示它错误。我该如何解决这个问题?我应该URLEncode在网站上的一切 – SSpoke

+0

答案取决于你使用的语言/框架,它通常涉及一些特定于该框架的研究。在StackOverflow中搜索“字符编码”+有问题的框架 - 你会看到一些复杂性,一旦你发现它的根源,你也应该有一些答案。这可以更具体。 – jefflunt

+2

有关字符编码检测的信息,请参阅以下StackOverflow问题;也许这是你的问题:http://stackoverflow.com/questions/774075/character-encoding-detection-algorithm –