我目前正在使用TinyMCE作为我的CMS用户的html编辑器.
不知何故欧元符号(€)被IE(任何)转换为%u20AC.
经过短暂的搜索,我找到了this.它为UTF-8欧元符号的不同编码提供了很多,但不是%u20AC,百分比图标.
我已经为UTF-8提供了正确的标题,所以我猜IE只是粗鲁地以自己的方式做事……
是否有一个PHP函数可以捕获这个奇怪的编码并将其置于正常的htmlentity(十六进制,十进制或命名).我可以只是string_replace()这个单一的问题符号,但我宁愿一次修复所有可能的冲突.
或者我应该简单地用& #x替换%u禁用%u的正常使用?
解决方法:
%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配置此行为.