【问题标题】:Recovering original UTF8/Kanji/Chinese text from random/garbage ASCII从随机/垃圾 ASCII 中恢复原始 UTF8/汉字/中文文本
【发布时间】:2011-12-20 18:38:08
【问题描述】:

我知道这可能是不可能的,但还是想试一试。

所以我有一些数据作为 html 表单提交的结果。用户最初在某些字段中输入汉字。但我得到的只是这样的随机 ascii 字母:

æŽå°ç޲

我已经修复了编码问题(以便新表单提交可以很好地处理 utf8),但我想看看我是否可以从修复之前恢复旧数据(正确的汉字字母)。

感谢您的帮助。

更新:

猜想需要澄清一下。正如我所说,我已经修复了 html 表单的编码问题。实际的问题是是否可以从我已经收到的“垃圾”数据中恢复原始汉字。

例如,我正在尝试“逆向工程”以下内容

ôüÒýR
å¼µå¥éºŸ
冉榆平
·¨¶vÚ¬

每一行都应该是某人的汉字或中文名字。我尝试了所有合理的编码,例如 GBK、gb18030 和 Big5-HKSCS。到目前为止没有运气。

最后更新:

现在对 BIG5 编码有一些好运了。它不适用于所有垃圾数据,但它适用于大约 2/3 的垃圾数据。

【问题讨论】:

  • 将元信息添加到您的站点和表示其编码为 UTF-8 的表单,然后您应该在服务器上获取 UTF-8 数据。然后你只需要把它正确地当作 UTF-8 对待。您提供的关于您正在做的事情的细节太少了,这个问题无法以目前的形式合理地回答。
  • 抱歉,修复 html 表单中的编码不是我的问题。正如标题所说,我有兴趣从垃圾信中恢复原始/有效文本。表单的编码问题已经得到处理。我将在问题中添加更多说明并阅读您的 Encoding 101 链接。
  • 阅读文章。顺便说一句,很好读。我现在将 BIG5 编码应用于垃圾字母有点幸运。我想除了一一尝试那些合理的编码之外,没有简单的方法可以解决这个问题。介意将您的评论转录为答案吗?在其中包含您的文章链接。
  • 正如我在文章中所说,是否可以“恢复”某些东西首先取决于它是如何被破坏的。

标签: html utf-8 character-encoding ascii


【解决方案1】:

仅供参考,java String 类由 2 字节字符支持,并且是在 unicode 只有 2 字节时设计的。因此它不处理 3 字节的日文和中文字符。见http://java.sun.com/developer/technicalArticles/Intl/Supplementary/

【讨论】:

    【解决方案2】:

    使用Character set converter - online tool

    • 输入编码应为 UTF8

    • 对于输出编码,尝试东方字符的所有合理编码。

    • 记得勾选第二个复选框。

    如果不是全部的话,大部分垃圾信都应该被回收。

    【讨论】:

    • 好工具!从 iso-8859-1 到 utf-8 'í' 和 'Á' 返回 'Ã'。这怎么可能?
    【解决方案3】:

    那些字母不是 ASCII。 ASCII 字母没有任何类型的重音符号。

    不清楚您是如何读取这些数据的——它是来自文件、数据库还是其他什么?无论如何,它可能已经 in UTF-8 - 所以你应该尝试使用该编码来读取它。您还没有告诉我们您使用的是什么平台,但您应该确保无论您使用的是什么,您都可以按数字找出您阅读过的 Unicode 字符> - 这比将值打印为字符要可靠得多。

    【讨论】:

    • 服务器设置中的平台?这是一个常规的 LAMP 设置。而且我很确定 ASCII-II 有重音字符。无论如何,并非所有旧数据都显示为随机字母。我开始怀疑这与用户输入汉字字符的方式有关。最后,是的,您的建议是我如何解决问题 - 通过使用 JS 将 utf8 显式转换为 xml 实体。
    • 再次,真正的问题是如何将旧数据恢复为常规汉字字母。
    • @Dave:ASCII 本身没有任何重音字符。我不知道您所说的 ASCII-II 是什么意思,但如果它是称为“扩展 ASCII”的 许多 8 位编码之一,那么您应该知道那不是 ASCII。但是您仍然没有弄清楚您是如何开始接收数据的,或者它是如何存储的,或者您是如何读取它的。它在一个文件中吗?它在数据库中吗?您的网络应用程序是用什么语言编写的?请给我们更多更多背景信息。请参阅 tinyurl.com/so-hints 以获取有关什么是好问题的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 1970-01-01
    相关资源
    最近更新 更多