我想在 php 中将字符串从 utf-8 转换为 iso-8859-1。 (实际上我想删除所有不在 ISO-8859-1 字符集中的字符)。
$text = "test 💂🏼♂️ test xäöüx x@x x€x";
$text = iconv('UTF-8', 'ISO-8859-1//IGNORE', $text);
预期输出为:test test xäöüx x@x xx
但我得到:test test x����x x@x xx
为什么 iconv 有德国变音符号的问题?以及为什么有疑问时不将其删除而是变成问号?
字符 äöü(U+00E4、U+00F6 和 U+00FC 的价值)在 ISO-8859-1 中具有此编码:
如果我们使用一些额外的调试信息运行您的代码的变体:
$text = 'äöü';
$text = iconv('UTF-8', 'ISO-8859-1//IGNORE', $text);
echo bin2hex($text);
...我们得到了预期的输出:
e4f6fc
您可以看到 � 有几个原因,所有这些都与您使用的任何渲染工具(我想是网络浏览器)有关: