我目前正在使用TinyMCE作为我的CMS用户的html编辑器。 不知何故欧元符号(€)被IE(任何)转换为%u20AC。
经过短暂的搜索,我找到了this。它为UTF-8欧元符号的不同编码提供了很多,但不是%u20AC,具有百分比图标。
我已经为UTF-8提供了正确的标题,所以我认为IE只是粗鲁地以自己的方式做事......
是否有一个PHP函数可以捕获这个奇怪的编码并将其置于正常的htmlentity(十六进制,十进制或命名)。我只能string_replace()
这个问题符号,但我宁愿一次解决所有可能的冲突。
或者我应该简单地将%u
替换为&#x
,以禁用%u的正常使用情况?
答案 0 :(得分:5)
%u20AC
是€
的Unicode编码数据,由JavaScript的escape()
函数生成UTF8用于服务器端处理。
标准PHP urldecode无法处理它,因此您需要使用扩展例程:
/**
* @param string $str unicode and ulrencoded string
* @return string decoded string
*/
function utf8_urldecode($str) {
$str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str));
return html_entity_decode($str,null,'UTF-8');;
}
同时检查您是否可以为TinyMCE配置此行为。
答案 1 :(得分:0)
20AC
这是欧元的十六进制代码,因此您可以在html文件中轻松解决此问题,而不是使用€
尝试使用此代码€