关于编码:php-iconv从UTF-8转换为Windows-1250不起作用

php - iconv convert from UTF-8 to Windows-1250 doesn't work

嗨,大家好。 我对iconv一直有疑问。 现在,我必须将字符串转换为Windows-1250,这似乎不起作用:

1
2
3
4
5
6
$string ="?a?a ho pap?uha, ogrcal mi krpce!";
echo $string . ' ( ' . mb_detect_encoding($string) . ' ) ';
$string_encoded = iconv( mb_detect_encoding( $string ), 'Windows-1250//TRANSLIT', $string );
echo $string_encoded . ' ( ' . mb_detect_encoding($string_encoded) . ' ) ';
$string_encoded = mb_convert_encoding( $string, 'Windows-1250' );
echo $string_encoded . ' ( ' . mb_detect_encoding($string_encoded) . ' ) ';

上面的三个回声恰好输出如下:

1
2
3
?a?a ho pap?uha, ogrcal mi krpce! ( UTF-8 )
?a?a ho pap?uha, ogrcal mi krpce! ( )
mb_convert_encoding() Unknown encoding"Windows-1250" ( ASCII )

既然我一直看到这个菱形问号,我想知道这个php函数是否可以正常工作。 如何将UTF-8转换为Windows-1250?

  • 该文件已保存在UTF-8的notepad ++中
  • 我也尝试过header('Content-Type:text / html; charset = windows-1250'); 和setLocale()

我也遇到过类似的问题。 读取CSV文件时,单词"?eskárepublika"被读取为"èeskárepublika"。

这为我解决了:

1
iconv("Windows-1250","UTF-8", ($string));


? 字符表示您的文本被解释为UTF-8,但此时遇到了无效的字节序列。 意思是,您不使用UTF-8,但客户端将其读取为UTF-8。 这意味着iconv可以正常工作,无论谁读取结果,都没有收到将其解释为Windows-1250的消息。

了解每个程序员绝对肯定要了解的编码和字符集,以便在Web应用程序中使用文本并从头到尾处理Unicode。


是旧帖子,但是您可以将UTF-8转换为Windows-1252,您将具有相同的效果:

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

但是,如果您确实需要Windows-1250,则可以使用此解决方案并适应您的需要。