【问题标题】:convert UTF-8 to CP1252 in ubuntu with PHP or bash shell在 ubuntu 中使用 PHP 或 bash shell 将 UTF-8 转换为 CP1252
【发布时间】:2014-10-15 22:06:40
【问题描述】:

我有一个关于在 Ubuntu 中使用 PHP 或 SHELL 将 UTF-8 转换为 CP1252 的问题。

背景:在 Ubuntu 中使用 PHP 或 SHELL 将 csv 文件从 UTF-8 转换为 CP1252,将文件从 Ubuntu 复制到 Windows,使用 nodepad++ 打开文件。

环境:

  • Ubuntu 10.04
  • PHP 5.3
  • 带有字母(–、à、ç)的文件 csv

使用的方法:

  1. 使用 PHP
    iconv("UTF-8", "CP1252", "content of file")

    mb_convert_encoding("content of file", "UTF-8", "CP1252")
    如果我检查生成的文件
    file -i name_of_the_file
    它显示:
    name_of_the_file: text/plain; charset=iso-8859-1
    我把这个转换后的文件复制到windows,用notepad++打开,在右下角,我们可以看到编码是ANSI
    当我将编码从 ANSI 更改为 Windows-1252 时,特殊字符显示得很好。

  2. 带外壳
    iconv -f UTF-8 -t CP1252" "content of file"
    其余的都是一样的。

问题: 1. 为什么命令文件没有直接显示CP1252或ANSI,而是显示ISO-8895-1? 2. 为什么我将编码从ANSI更改为Windows-1252时,特殊字符可以很好地显示。

提前谢谢你!

【问题讨论】:

    标签: windows ubuntu encoding utf-8 cp1252


    【解决方案1】:

    1.

    CP1252 和 ISO-8859-1 非常相似,通常其中一个编码的文件看起来与第二个编码的文件相同。请参阅 Wikipedia 以了解哪些字符在 Windows-1252 中而不在 ISO-8859-1 中。

    字母àç 在两种编码中的编码相同。虽然 ISO-8859-1 没有 œ 而 CP1252 有,但 file 可能错过了这一点。 AFAIK 它不会分析整个文件。

    2.

    “ANSI”是 Windows 中默认的非 Unicode 编码的误称。对于西欧语言,ANSI 表示 Windows-1252。如果是中欧,则为 Windows-1250,如果是俄罗斯,则为 Windows-1251,依此类推。除了 Windows 之外,没有任何东西使用术语“ANSI”来指代编码。

    【讨论】:

      猜你喜欢
      • 2014-05-06
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多