【问题标题】:Linux converting my URLs to at signs?Linux 将我的 URL 转换为 at 符号?
【发布时间】:2016-03-31 01:52:16
【问题描述】:

我有一个我一直在我的 mac 上开发的脚本,它使用了 scrapy,一个用于网络抓取的 python 库。我以为一切都很好,直到今天早上我尝试将它加载到服务器上。

服务器运行 Debian 8.2,运行良好。问题在于读取其抓取的文件。 Debian 似乎将文件读取为大量的 at 符号 (@n^@^@^@d^@^@^@e^@^@^@x^@^@^@.^@^@^@p),但将文件上传到 Dropbox 并查看它会发现该文件实际上充满了 URL。所以抓取很好,但文件无法正确读取。

我该如何解决这个问题?

更大的切片: i^@^@^@n^@^@^@d^@^@^@e^@^@^@x^@^@^@.^@^@^@p^@^@^@h^@^@^@p^@^@^@i^@^@^@n^@^@^@d^@^@^@e^@^@^@x^@^@^@.^@^@^@p^@^@^@h^@^@^@p^@^@^@?^@^@^@s^@^@^@t^@^@^@r^@^@^@P^@^@^@a^@^@^@g^@^@^@e^@^@^@I^@^@^@D^@^@^@=^@^@^@S^@^@^@F^@^@^@0^@^@^@1^@^@^@_^@^@^@0^@^@^@3^@^@^@_^@^@^@0^@^@^@1^@^@^@.^@^@^@.^@^@^@/^@^@^@k^@^@^@o^@^@^@/^@^@^@.^@^@^@.^@^@^@/^@^@^@e^@^@^@n^@^@^@/^@^@^@.^@^@^@.^@^@^@/^@^@^@c^@^@^@n^@^@^@/^@^@^@i^@^@^@n^@^@^@d^@^@^@e^@^@^@x^@^@^@.^@^@^@p^@^@^@h^@^@^@p^@^@^@?

【问题讨论】:

  • 你用什么来读取本地机器上的文件?
  • 这可能是由于 LANG 系统变量的设置而造成的伪影吗?
  • 我用 nano 来看看它,但从技术上讲,脚本使用的是 sed。
  • 你能发布前 24 个左右字符的十六进制转储吗?我有一种预感,它被存储在完整的 UCS-4 (en.wikipedia.org/wiki/UTF-32) 中。
  • 绝对看起来像 UCS-4。

标签: python linux debian


【解决方案1】:

似乎是 UCS-2(基本上是 UTF-16)的问题。在你的python程序中使用encoding='utf16'encoding='utf_16_be'编码(详见here)。

您可以通过这种方式使用iconv 实用程序将文件从 UCS-2 转换为 UTF-8:

iconv -f UCS-2 -t UTF-8 inputfile > outputfile

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-02
    • 2013-10-30
    • 2013-02-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2017-03-08
    • 2019-08-06
    相关资源
    最近更新 更多