php - iconv从UTF-8转换为Windows-1250不起作用

时间:2015-02-12 13:07:05

标签: php encoding utf-8 character-encoding

嗨,伙计们。我一直遇到iconv的问题。现在我必须将字符串转换为Windows-1250,这似乎不起作用:

$string = "ľaľa ho papľuha, ogrcal mi krpce!";
echo $string . ' ( ' . mb_detect_encoding($string) . ' ) <br>';
$string_encoded = iconv( mb_detect_encoding( $string ), 'Windows-1250//TRANSLIT', $string );
echo $string_encoded . ' ( ' . mb_detect_encoding($string_encoded) . ' ) <br>';
$string_encoded = mb_convert_encoding( $string, 'Windows-1250' );
echo $string_encoded . ' ( ' . mb_detect_encoding($string_encoded) . ' ) <br>';

上面的三个回声输出正是如此:

ľaľa ho papľuha, ogrcal mi krpce! ( UTF-8 )
�a�a ho pap�uha, ogrcal mi krpce! ( ) 
mb_convert_encoding() Unknown encoding &quot;Windows-1250&quot; ( ASCII )

由于我总是看到这个钻石问号,我想知道这个PHP功能是否有效。如何将UTF-8转换为Windows-1250?

  • 文件以UTF-8
  • 保存在记事本++中
  • 我也试过标题(&#39;内容类型:text / html; charset = windows-1250&#39;);和setLocale()

4 个答案:

答案 0 :(得分:4)

字符表示您的文本被解释为UTF-8,但此时遇到了无效的字节序列。意思是,你没有服务UTF-8,但客户端正在以UTF-8的形式阅读它。这意味着iconv工作正常,无论是谁正在阅读结果,都没有得到它应该将其解释为Windows-1250的信息。

请参阅What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With TextHandling Unicode Front To Back In A Web App

答案 1 :(得分:3)

我遇到了类似的问题。在阅读CSV文件时,单词“Českárepublika”被读作“Èeskárepublika”。

这解决了我:

--android_cpu

答案 2 :(得分:1)

旧帖子,但你可以将UTF-8转换为Windows-1252,你会有同样的效果:

$str = "ľaľa ho papľuha, ogrcal mi krpce!"
$str = mb_convert_encoding( $str, "Windows-1252", "UTF-8" );

但如果您真的需要Windows-1250,可以使用THIS SOLUTION并根据需要进行调整。

答案 3 :(得分:0)

正确答案是iconv( "UTF-8", "Windows-1250", $string );