【问题标题】:What character set is this?这是什么字符集?
【发布时间】:2009-12-14 21:24:12
【问题描述】:

我从一个客户端收到了一堆 CSV 文件(这似乎是一个数据库转储),其中许多列都有如下奇怪的字符:

  • Alain LefÃÆ'¨vre
  • AngÃÆ'¨le Dubeau & La PietÃÆ' 

代表一个é的字符似乎很多。有谁知道什么编码会为 é 产生那么多字符?我不知道他们从哪里获取这些 CSV 文件,但假设我无法以更好的格式获取它们,我该如何将它们转换为 UTF-8 之类的格式?

【问题讨论】:

    标签: database encoding csv


    【解决方案1】:

    它似乎是一个双重重新错误解码的 UTF-8。 也许可以通过将数据打开为 utf-8、将其保存为 Latin-1(可能)并再次打开为 UTF-8 来恢复数据。

    【讨论】:

      【解决方案2】:

      看起来它经历了一个损坏过程,其中数据被写入为 utf-8 但读入为 cp1252,这种情况发生了 3 次。这可能是可恢复的(我不知道它是否适用于每个字符,但至少对某些字符有效)通过将损坏的数据放入反向转换 - 以 utf8 形式读入,以 cp1252 形式写出,重复。有很多方法可以进行这种转换 - 使用 Tordek 建议的文本编辑器,使用如下命令行工具,或者使用数据库或编程语言中内置的编码功能。

      unix shell prompt> echo Alain Lefèvre | 
      iconv -f utf-8 -t cp1252 | 
      iconv -f utf-8 -t cp1252 | 
      iconv -f utf-8 -t cp1252
      
      Alain Lefèvre
      
      unix shell prompt>
      

      【讨论】:

        【解决方案3】:

        代表一个é似乎有很多字符。

        记住,字符≠字节。您在输出中看到的是字符;你需要做一些不寻常的事情才能真正看到字节。 (我建议使用“xxd”,一种与Vim 应用程序一起安装的工具;或“od”,这是GNU 操作系统的core utilities 之一。)

        有谁知道什么编码会产生这种情况

        一个擅长猜测字节流的字符编码的工具是“encaExtremely Naive Charset Analyser

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-10
          • 2011-12-14
          • 1970-01-01
          • 1970-01-01
          • 2011-01-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多