PHP编码从ISO-8859-1到UTF-8

PHP编码从ISO-8859-1到UTF-8,php,encoding,utf-8,iso-8859-1,Php,Encoding,Utf 8,Iso 8859 1,HTTP源代码建议在meta标记中使用“iso-8859-1”。德国umlauts很好,但为什么“新”的引号没有正确转换?在PHP中,有一个函数fix\u拉丁语。使用此函数时,引号也会正确转换 PS:欧洲货币符号€(EUR)也有同样的情况-它也转换错误(除了fix_拉丁语功能),但为什么?ISO-8859-1中没有欧元符号。(ISO-8859-15就是为此而创建的。) 据我所知,mb\u convert\u encoding()不会音译字符。考虑使用。和/或确保根据需要设置内容类型标题 在下一个

HTTP源代码建议在meta标记中使用“iso-8859-1”。德国umlauts很好,但为什么“新”的引号没有正确转换?在PHP中,有一个函数fix\u拉丁语。使用此函数时,引号也会正确转换


PS:欧洲货币符号€(EUR)也有同样的情况-它也转换错误(除了fix_拉丁语功能),但为什么?ISO-8859-1中没有欧元符号。(ISO-8859-15就是为此而创建的。)

据我所知,
mb\u convert\u encoding()
不会音译字符。考虑使用。和/或确保根据需要设置
内容类型
标题


在下一个PHP版本中,还将出现包装ICU的。

尝试将HTTP元中的字符编码设置为utf8,看看是否有效。嗯,我没有ciao.de,所以我无法影响它。我想抓取一些结果。
mb\u convert\u编码($b,'UTF-8','ISO-8859-15')
不起作用,
iconv('ISO-8859-15','UTF-8',$b)
也不起作用。我想,在ISO-8859-1*编码和
mb\u convert\u encoding()
的情况下,我将使用fix\u拉丁函数。嗯,还不完全清楚您要做什么。另外,请记住,如果您的字符串已经是
ISO-8859-15
(如果是用户输入,这是可能的),则告诉PHP将其读取为
UTF-8
,并将其转换为
ISO-8859-15
,可能确实会导致垃圾。:-)这很清楚。我并没有告诉PHP把它读成UTF-8。为此,我正在解析HTTP响应头和HTTP内容,并寻找
内容类型
声明。当我找到这样一个标记时,我将调用
mb\u convert\u encoding
将此编码内容转换为UTF-8。从PHP版本5.3.0开始,此扩展(INTL,因此是音译)与PHP捆绑在一起。或者,此扩展的PECL版本可用于所有大于5.2.0的PHP版本(建议使用5.2.4+)@user672452:只有在原始文件/标题中正确命名编码时,此功能才起作用。
<?php
mb_internal_encoding('UTF-8');
mb_language('uni');
$a=file_get_contents("http://www.ciao.de/Erfahrungsberichte/8x4_Wild_Flower_Deo_Spray__8937431");
preg_match('/dass auf dem Versch(.*)ziehen mich/Us',$a,$b);
$b=$b[1];
echo $b."\n";
echo utf8_encode($b)."\n";
echo mb_convert_encoding($b,'UTF-8','iso-8859-1')."\n";
lussdeckel riesengro▒ und un▒bersehbar glitzernd ein ▒New▒ prangt. Neue Produkte
lussdeckel riesengroß und unübersehbar glitzernd ein �New� prangt. Neue Produkte
lussdeckel riesengroß und unübersehbar glitzernd ein �New� prangt. Neue Produkte