UTF-8使用Internet Explorer%u20AC编码到€

时间:2012-04-06 10:49:56

标签: php internet-explorer encoding utf-8 tinymce

我目前正在使用TinyMCE作为我的CMS用户的html编辑器。 不知何故欧元符号(€)被IE(任何)转换为%u20AC。

经过短暂的搜索,我找到了this。它为UTF-8欧元符号的不同编码提供了很多,但不是%u20AC,具有百分比图标。

我已经为UTF-8提供了正确的标题,所以我认为IE只是粗鲁地以自己的方式做事......

是否有一个PHP函数可以捕获这个奇怪的编码并将其置于正常的htmlentity(十六进制,十进制或命名)。我只能string_replace()这个问题符号,但我宁愿一次解决所有可能的冲突。

或者我应该简单地将%u替换为&#x,以禁用%u的正常使用情况?

2 个答案:

答案 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文件中轻松解决此问题,而不是使用尝试使用此代码€