【问题标题】:What encoding does MAC Excel use?MAC Excel 使用什么编码?
【发布时间】:2012-12-28 23:20:00
【问题描述】:

我有一个客户端想要将 .csv 导出到服务器,PHP 将在服务器上对其进行解析,以便生成包含其数据的表。我正在使用 iconv 转换为适当的编码(UTF-8)。不幸的是,我在 Windows 上,所以我不知道源编码是什么。

MAC Excel 使用什么编码来生成 .csv?我尝试了很多不同的组合,但没有一个适用于法语口音,据我所知,它们在 MAC 字符集中的排列方式与在 UTF-8 中的排列方式不同

例如:

正确的显示应该是: “代表团”

大多数类型的编码(包括使用 utf8_encode())给出: 'DÈlÈgation'

Macintosh 到 UTF-8 给出: 'D»l»gation'

如果我在我的 PC 上打开从 MAC 保存的 .csv 文件,我会看到法语“é”重音为“È”,因此是否有可能将文件保存到我的计算机(或服务器)上将文件直接强制为 UTF-8,所以现在“È”是字符的直接值,而不是 UTF-8 编码误解?

十六进制转储

使用 bin2hex(),字符串的十六进制转储: 'DÈlÈgation 1' 是: 44c86cc8676174696f6e2031

-- 事实上,我假设它是 DÈlÈgation 而不是 Délégation,因为如果我在记事本(在我的 PC 上)中打开 .csv 文件,它会显示为 È 而不是 é。

【问题讨论】:

  • 它没有任何编码,没有办法知道不同转换的什么样的错误导致文件最终用字节0xc8代替é
  • 我想我最好只对文本中捕获的每个不正确字符执行 str_replace() 操作?
  • 你说它应该是Délégation。如果它应该是DÈlÈgation,那么它显然是在 Windows-1252 中。
  • 是的,它应该是 Délégation。 .csv 文件在记事本或 PC 上的任何文本编辑器中打开时显示为 DÈlÈgation。
  • 您的记事本所做的只是将其解码为 windows-1252,它不会像您的 php 代码在解码为 windows-1252 时那样神奇地显示正确的文本。

标签: php macos csv utf-8 character-encoding


【解决方案1】:

您的客户是否可以从 Apple 网站安装 Apple Numbers 试用版,使用 Numbers 打开 .csv 文件,然后转到“文件”、“导出”、“CSV”,然后选择其中一个“UTF-8”或“windows Latin 1”并重新发送 UTF-8 和 Windows Latin 1 文件? Mac 上的“数字”应用程序有时可以解决 Excel 上遇到的问题...

【讨论】:

    【解决方案2】:

    Mac 程序使用的常用编码是MacRoman

    【讨论】:

    • 是的,我以前试过这个。不幸的是,它只会将法国口音修改为另一个符号。我在上面的问题中添加了更多信息。
    • 发布相关文本的十六进制转储。
    • 我在问题中添加了一个十六进制转储。
    • 我很难过。我不知道那可能是什么字符集。
    • 我的替代方法是使用 str_replace() 替换不正确的字符,但这不是一个非常稳定的修复,因为我需要添加一个新函数,因为新的不正确字符被捕获在文本中 - 加上我无法想象这是一个非常有效的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2012-01-18
    相关资源
    最近更新 更多