【问题标题】:How to parse an ini-file containing special characters with "parse_ini_file"?如何使用“parse_ini_file”解析包含特殊字符的ini文件?
【发布时间】:2012-10-18 23:01:10
【问题描述】:

我有一个 folder.ini 包含:

[Labels]
; Ordnername
name=testverzeichnis
; Ordnerbeschreibung
description=verzeichnis zu testen von daten
[Contents]
[Publisher]
publisher=e-Solutions
copyright=André Reinhardt

当我用parse_ini_file() 解析它时,我得到了 而不是é。 我的代码:

$ini_array = parse_ini_file("sad - Kopie (6)/folder.ini", TRUE);
print_r($ini_array);

我试图用é 替换é,但我的字符串是0

补充: 此代码用于查看内容适用é&eacute

echo file_get_contents($directories[$i]."/folder.ini")

我怎样才能避免这种情况?

【问题讨论】:

  • 显示一些代码。您如何以及在哪里输出数据?
  • 您可能会将é 输出为不起作用的UTF-8。检查ini文件保存的编码。
  • 更有可能是反过来——INI 文件被存储为 ISO-8859-1/Windows-1252,而 UTF-8 被用作输出编码
  • 确保文件以 UTF8 格式保存且没有 BOM
  • @Pekka:即“输出为UTF-8”

标签: php parsing character-encoding ini


【解决方案1】:

以下是一个假设,因为到目前为止,您的问题在技术上并未记录实际原因是什么。

但是可以说你这里有一个字符编码相关的问题。

使用 UTF-8 编码保存您的 INI 文件,这应该工作。我假设您的 PHP 脚本将 UTF-8 输出到浏览器,并且 INI 文件中的值不是 UTF-8 编码的。如果您使用 UTF-8 编码保存 INI 文件,这应该然后工作。

这里的关键点与其说是“UTF-8”,不如说是您使用您使用的应用程序所期望的正确字符编码来保存 INI 文件。例如,如果您的应用程序使用 ISO-8859-1,则使用 ISO-8859-1 编码保存 INI 文件。

INI 文件和 PHP 脚本都需要使用相同的“语言”。

您可以添加一个“翻译器”,它可以帮助您将两种不同的“语言”结合在一起。这样的翻译器(或更准确地说是重新编码器)是iconv

$ini_iso88591 = file_get_contents("sad - Kopie (6)/folder.ini");
$ini_utf8     = iconv("ISO-8859-1", "UTF-8", $ini_iso88591);
$ini_array    = parse_ini_string($ini_utf8, TRUE);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-22
    • 2015-07-26
    • 2012-09-30
    • 2022-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多