【问题标题】:Convert files between UTF-8 and ISO-8859 on Linux在 Linux 上在 UTF-8 和 ISO-8859 之间转换文件
【发布时间】:2018-01-09 22:27:21
【问题描述】:

每次我遇到 Unicode 时,都没有任何作用。我在 Linux 上,我从 Windows 获得了这些文件:

$file *
file1: UTF-8 Unicode text
file2: ISO-8859 text
file3: ISO-8859 text

在我发现文件有不同的编码之前,什么都没有。我想让我的生活变得轻松,并让它们都采用相同的格式:

iconv -f UTF-8 -t ISO-8859 file1 > test
iconv: conversion to `ISO-8859' is not supported
Try `iconv --help' or `iconv --usage' for more information.

我尝试转换为 ISO,因为这只是 1 次转换 + 当我在 gedit 中打开这些 ISO 文件时,德语字母“ü”显示得很好。好的,下次试试:

iconv -f ISO-8859 -t UTF-8 file2 > test
iconv: conversion from `ISO-8859' is not supported
Try `iconv --help' or `iconv --usage' for more information.

但显然这不起作用。

【问题讨论】:

  • 那是因为“ISO-8859”不是编码。您的意思是 ISO-8859-1 还是 ISO-8859-15?还是one of the other 14
  • 您的 utf-8 源文件也可能有问题。它可以包含在 ISO-8859 中无法表示的字符。转换成 utf-8 会更安全。

标签: linux iconv


【解决方案1】:

ISO-8859-x (Latin-1) 编码只包含非常有限的字符,您应该始终尝试编码为 UTF-8 以使生活更轻松。

而且 utf-8 (Unicode) 是 ISO 8859 的超集,因此您无法将 UTF-8 转换为 ISO 8859 也就不足为奇了

似乎命令file 只提供了非常有限的文件编码信息

您可以尝试按照@hobbs 评论中的建议从编码 ISO-8859-1 或 ISO-8859-15 或从 2~14 中猜出另一个

您可以通过iconv -l 获得支持的iconv 编码

如果生活让你难以猜测真正的文件编码,this silly script might help you out :D

【讨论】:

  • @user3182532 ISO 8859 是一个标准的名称,它有 16 个部分,指定了 16 种不同的编码(有一些共同点,但也有不同)。 file 告诉您它不知道它是哪一个。这是 8 位编码的普遍问题 — 很容易判断您有 8 位编码,但在没有先验知识的情况下找出 哪个 纯属猜测。试一试,看看哪一个是正确的。 8859-15 是一个很好的初步猜测。
  • "utf-8 (Unicode) 是 ISO 8859 的超集" ... 我认为这不是真的。请您引用或解释一下,因为根据我的经验,保存为iso-8859-1 的文件被解释为utf-8 肯定会出错。
  • @Stewart Unicode 编码的字符集每个 ISO-8859 字符集中字符集的超集。不过,字符的编码方式不同。
【解决方案2】:

与其他答案一样,您可以列出支持的格式

iconv -l | grep 8859 

grep 将节省您查找支持的编码版本的时间。您可以在我的示例中提供 <number>ISO 或您的编码中的任何预期字符串。

【讨论】:

    猜你喜欢
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 2010-10-13
    • 2014-09-19
    • 2014-11-24
    • 2010-11-19
    • 1970-01-01
    相关资源
    最近更新 更多