【发布时间】:2014-05-03 02:28:19
【问题描述】:
我正在尝试将 UTF-8 字符串转换为 CP1255(希伯来语)
我已尝试运行以下命令(我使用的是 detect_encoding,因为我的某些输入不是 UTF-8):
foreach($param as $key=>$value){
$newval = iconv(mb_detect_encoding($value),"cp1255",$value);
$querystr .= $key."=".$newval."&";
}
不管怎样,结果是所有的希伯来字符都返回漂亮的�符号, 并且所有其他(英文/数字)都符合预期并保持原样。
我怎样才能正确地做到这一点?
【问题讨论】:
-
您在哪里看到 � 符号?您是否(双重/三重)检查过该媒体是否知道 cp1255 编码?例如。在浏览器中检查页面属性,看看它是否真的切换到希伯来语。
-
在 chrome 控制台 -> 网络 -> 响应选项卡(使用 ajax)也尝试在结果上运行 mb_detect_encoding 并得到“UTF-8”
-
哦,ajax ...在那种情况下,为什么不坚持使用utf-8?如果您查看 XMLHttpRequest 等的 W3C 规范,您会发现到处都是“使用 utf-8”、“始终使用 utf-8”、“强烈建议使用 utf-8”。
-
我需要将数据发布到仅接受 CP1255 编码的其他服务器
-
是客户端/浏览器实际将数据发布到第二台服务器吗?如果是,并且您正在使用
<form>元素,请在您的第一台服务器上使用 utf-8 编码,并使其成为<form action="//secondserver..." accept-charset="windows-1255">元素,以向浏览器指示编码应该是 cp1255。见w3.org/TR/html401/interact/forms.html#adef-accept-charset
标签: php utf-8 character-encoding iconv