Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中具有奇怪字符集行为的函数参数_Php_Function_Parameters_Character Encoding - Fatal编程技术网

PHP中具有奇怪字符集行为的函数参数

PHP中具有奇怪字符集行为的函数参数,php,function,parameters,character-encoding,Php,Function,Parameters,Character Encoding,我有以下PHP代码: <?php ini_set( 'default_charset', 'UTF-8' ); mb_internal_encoding('UTF-8'); function labelValidate($label) { echo mb_detect_encoding($label.'x', 'UTF-8, ISO-8859-1'); echo '<br />'; echo mb_detect_encoding('Rio, co

我有以下PHP代码:

<?php

ini_set( 'default_charset', 'UTF-8' );
mb_internal_encoding('UTF-8');

function labelValidate($label)
{
    echo mb_detect_encoding($label.'x', 'UTF-8, ISO-8859-1');

    echo '<br />';

    echo mb_detect_encoding('Rio, coração do Brasil', 'UTF-8, ISO-8859-1');
}

labelValidate('Rio, coração do Brasil');

?>

我得到这个输出:

ISO-8859-1 UTF-8

有人知道为什么$label参数有ISO字符集,但是我在函数中创建的直接echo有UTF-8编码吗

这让我很头疼,因为我必须在$label var中放入一个utf8_编码,否则我会在输出中得到有问题的字符


谢谢你的帮助

关于你的文本编辑器


尝试从代码中删除两个“Rio,coração do Brasil”字符串,然后再编写一次。

在@Marc B和@Michael Madsen的帮助下,我下载了Notepad++(PHP IDE),并在没有BOM的情况下转换了文件UTF-8字符集,因此我的所有问题都得到了解决。Dreamweaver将一些文件保存为ANSI,这导致了PHP的混乱


谢谢大家

当你使用严格模式(第三个参数)时会得到什么?@str我已经输入了第三个参数(true),但是我得到了相同的结果。不要使用记事本将PHP代码保存为UTF-8!它将在文件开头插入3个额外字节(所谓的字节顺序标记),这些字节将被视为输出(在客户端上不可见,因为它对应于零宽度空间),因此阻止您使用
功能。将Dreamweaver设置为另存为UTF-8,或者使用其他不强制BOM的编辑器。@MichaelMadsen,你救了我一天!使用记事本时,脚本生成了一个不可见的输出,导致布局崩溃,因此我下载了记事本++,它有大量字符集选项,包括转换为不带BOM的UTF-8。非常感谢你的帮助!嗨,皮奥特!对不起,我不明白。在何处再写一次?@masimao:从脚本中删除字符串,然后在utf-8编辑器中重新键入。有可能文件是在非utf8模式下更改的,
Rio
字符串的两个副本中的一个实际上是在iso-8859模式下输入的。@Peter Szymkowski,我删除了两个“Rio,coração do Brasil”字符串并再次写入,这一个也返回UTF-8。只有参数$label有de ISO-8859-1字符集。@马克B,头像!我通常使用Dreamweaver,但在Google上我发现了一些使用记事本打开文件并将其保存为UTF-8字符集的技巧。我在记事本中看到Dreamweaver将文件保存为ANSI,我认为这产生了字符集问题,因为现在mb_detect_encoding()总是检测UTF-8。非常感谢