【发布时间】:2009-10-28 11:10:28
【问题描述】:
我的 PHP 代码中有 2 个字符串,1 个是我的方法的参数,1 个是来自 ini 文件的字符串。 问题是它们并不相等,尽管它们具有相同的内容,可能是由于编码问题。使用var_dump时,报第一个字符串的长度是23,第二个字符串的长度是47(这背后的原因见我问题的结尾)
我如何确保它们都以相同的方式编码并且最终具有相同的长度以便比较不会失败?最好,我希望它们是 utf8 编码的。
作为参考,这是代码的摘录:
static function getString($keyword,$file) {
$lang_handle = parse_ini_file($file, true);
var_dump($keyword);
foreach ($lang_handle as $key => $value) {
var_dump($key);
if ($key == $keyword) {
foreach ($value as $subkey => $subvalue) {
var_dump("\t" . $subkey . " => " . $subvalue);
}
}
}
}
使用以下 ini:
[clientcockpit/login.php]
header = "Kunden Login"
username = "Benutzername"
password = "Passwort"
forgot = "Passwort vergessen"
login = "Login"
使用 getString("clientcockpit/login.php", "inifile.ini") 调用方法时,输出为:
string 'clientcockpit/login.php' (length=23)
string '�c�l�i�e�n�t�c�o�c�k�p�i�t�/�l�o�g�i�n�.�p�h�p�' (length=47)
【问题讨论】:
-
问题字符串是来自用户还是来自ini文件?
-
如果我记得 parse_ini_file() 函数有一个 utf8 编码(多字节)的错误。您可能需要更改 .ini 文件的编码。 (我无法通过谷歌搜索参考资料)
-
google it: php multibyte parse_ini_file 我想你会找到解决这个问题的线索。不幸的是,我不确定。
-
@C.罗斯有问题的字符串来自ini文件@Ismael我找不到parse_ini_file和php 5.2.6(我使用的)有任何问题,你有链接吗?也许是 parse_ini_file 的替代品?
-
@Pascal 不幸的是,我不知道任何替代方案。我仍然相信问题只是一些编码。使用相同的编码保存 .ini 文件和 .php 脚本(调用函数 parse_ini_file)。如果它不起作用,我不知道可能是什么问题。