Php 使用internet explorer%u20AC对&;进行UTF-8编码;欧元

Php 使用internet explorer%u20AC对&;进行UTF-8编码;欧元,php,internet-explorer,encoding,utf-8,tinymce,Php,Internet Explorer,Encoding,Utf 8,Tinymce,我目前正在使用TinyMCE作为我的CMS用户的html编辑器。 不知何故,IE(任何)将欧元符号(€)转换为%u20AC 经过短暂的搜索,我找到了。它为UTF-8欧元符号提供了很多不同的编码,但不包括带有百分比图标的%u20AC 我已经为UTF-8给出了正确的标题,所以我认为IE只是以自己的方式做事情很粗鲁 是否有一个PHP函数可以捕获这种奇怪的编码并将其转换为正常的htmlentity(十六进制、十进制或命名)。我可以只string\u replace()这个问题符号,但我宁愿一次修复所有可

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

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

我已经为UTF-8给出了正确的标题,所以我认为IE只是以自己的方式做事情很粗鲁

是否有一个PHP函数可以捕获这种奇怪的编码并将其转换为正常的htmlentity(十六进制、十进制或命名)。我可以只
string\u replace()
这个问题符号,但我宁愿一次修复所有可能的冲突


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

20AC
这是欧元的十六进制代码,因此您可以在html文件中轻松地解决此问题,而不必使用usign
尝试使用此代码
&\8364

%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配置此行为。

我的客户使用TinyMCE平台,但不知道unicode是什么。他们需要能够简单地使用欧元,但我不知道其他方式,试着检查TinyMCE菜单你会发现它很可能?你把符号放在哪里?以分贝为单位?还是直接在php文件中?非常感谢!你知道为什么Firefox不会出现这种情况吗?@WebCrabbler:不知道。这可能和TinyMCE有关,我不知道TinyMCE为什么要逃避那个角色。