2012-10-29 102 views
3

我有一個包含folder.ini:如何使用「parse_ini_file」解析包含特殊字符的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") 

我怎樣才能避免這種情況?

+2

顯示一些代碼。您如何以及在哪裏輸出數據? –

+3

你可能會輸出'é'作爲UTF-8,它不起作用。檢查ini文件保存的編碼。 – hakre

+0

這很可能是相反的方式 - INI文件存儲爲ISO-8859-1/Windows-1252,並且UTF-8用作輸出編碼 –

回答

5

以下是一個假設,因爲您的問題迄今尚未在技術上記錄實際原因。

然而,可以說是你在這裏有一個字符編碼相關的問題。

保存您的INI文件與UTF-8編碼和應該工作。我假設你的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); 
+0

太棒了,這個工程 – Paedow

相關問題