如何诊断和反转(不阻止)Unicode修改

时间:2010-06-02 05:40:39

标签: unicode string reverse-engineering corruption

在我上游的某个地方,发生了一些看起来像unicode的东西。一个症状是小写u umlaut(ü)被转换为“¼”(即​​角色FC转换为C3 BC)。假设我无法控制这个上游流程,我该如何对正在进行的工作进行逆向工程?如果可能的话,我可以向后转动香肠机器并将原始文本带回来吗?

(如果它有助于理解这种情况,我收到的文本是以MySQL转储的形式。我认为转储/传输过程中的somwewhere它被破坏了。)

2 个答案:

答案 0 :(得分:4)

您的文字没有“损坏”。它只是在UTF8中。 C3 BC是ü假设的被编码为。只需将您使用的任何软件设置为UTF8,所有的痛苦都会消失。如果您无法将软件设置为Unicode,请认真考虑切换到更新的软件。

我知道一开始很可怕,但无论如何你最终都必须这样做。我最喜欢的音乐排版器前一段时间切换到仅限Unicode的输入(他们甚至故意删除对旧的8位代码页的支持以让人们切换),我很沮丧,认为Latin-1对我来说已经足够了,打破那些工作得很好的东西是愚蠢的...然后我克服了它并将emacs设置为Unicode缓冲区,现在我将永远不必再考虑我生活中的字符编码了!

答案 1 :(得分:2)

首先,看起来你已经有了UTF-8编码的文本(因为你发现ü用你期望的编码解释,可能是拉丁文-1)。

您可以通过检查是否使用了正确的字节序列(当然还有未使用的非法字节序列)来猜测这个编码。请参阅the Wikipedia article以获取参考,并查找有效和无效的字节序列。如果文本以BOM开头,您可以非常确定编码,但这不是UTF-8所必需的。

要以所需的编码恢复文本,可以使用多种工具,GNU recode