【问题标题】:Mac issue with file encodingMac 文件编码问题
【发布时间】:2015-09-07 12:09:56
【问题描述】:

我有一个脚本,它从一台服务器读取一些数据并将其存储在一个文件中。但该文件似乎以某种方式损坏。我可以将其打印到显示器上,但使用 file 检查文件会产生

bash$ file -I filename  
filename: text/plain; charset=unknown-8bit

为什么它告诉我编码未知?文件的第一行显示为

“The Galaxy A5 and A3 offer a beautifully crafted full metal unibody

十六进制转储显示前三个字节是 0xE2、0x80、0x9C,后跟常规 ASCII 文本 The Galaxy A5...

怎么了?为什么file 告诉我编码未知,实际上是什么?

【问题讨论】:

  • 无法访问文件某种指示其中包含什么以及它是如何损坏的;不,我们不可以。不妨查看character-encoding tag wiki,了解如何提出适度智能问题的一些技巧。
  • 不,“Mac”不会默默地更改任何编码。也许您的特定工作流程中存在某些问题,但由于我们不知道那是什么,因此我们无法为您提供帮助。
  • 只需在终端上打印就可以正常工作。只是将其重定向到文件会产生问题。
  • 您仍然未能提供我们要求的信息。如果您的终端设置为使用与文件相同的编码,则不是 UTF-8 的文件将在终端中正常打印。但我们无法猜测它是什么;你只是说它绝对不是 UTF-8。
  • 上面的第一条评论有一些具体的建议。简而言之,几个字节的十六进制转储应该已经产生了奇迹,特别是如果这些字节不是普通的 7 位 ASCII,尤其是如果你能告诉我们它们应该显示为什么。

标签: macos utf-8 character-encoding file-encodings


【解决方案1】:

根据问题中的信息,该文件是一个非常好的 UTF-8 文件。前三个字节编码LEFT DOUBLE QUOTATION MARK (U+201C) 又名花引号。

也许你的file 版本真的太旧了。

【讨论】:

  • 如果您仍然遇到问题,可以发布一个新问题并提供足够的诊断信息。您可以将文件一分为二以找到有问题的字节(删除一半,看看问题是否仍然存在;如果没有,恢复有问题的一半,然后迭代地删除 that 的一半,等等)
【解决方案2】:

您可以使用 iconv 将文件转换为所需的字符集。例如

iconv --from-code=UTF8 --to-code=YOURTARGET

要获取支持的目标列表,请使用 --list 标志。

【讨论】:

  • 我试过了,显示iconv: conversion from unknown-8bit unsupported
  • 你知道远程服务器的字符集吗?您应该能够指定它来进行转换。
  • 即使未知,您也应该能够指定 --from=UTF8 标志来覆盖假设并强制正确转换。
猜你喜欢
  • 2017-01-21
  • 2019-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 2019-07-27
  • 2021-05-13
  • 2014-07-23
相关资源
最近更新 更多