0
<?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

HTTP 源代码在元标记中建议使用“iso-8859-1”。德语变音符号很好,但为什么“新”周围的引号没有正确转换?在 PHP手册 中有一个函数 fix_latin。使用此功能时,引号也正确转换!?

PS:欧洲货币符号 € (EUR) 也是如此 - 它也被转换错误(除了 fix_latin 函数),但为什么呢?

4

1 回答 1

1

欧元符号不在 ISO-8859-1 中。(为此目的创建了 ISO-8859-15。)

最好的我记得,mb_convert_encoding()不会音译字符。考虑iconv()改用。和/或确保content-type根据需要设置标题。

在下一个 PHP 版本中,还会有包含 ICU的Transliterator 类。

于 2011-06-27T06:42:11.220 回答