我正面临特殊字符的问题。我从MSSQL中的数据库中获取信息,该数据库在php中返回一个可能包含“àéöü”等特殊字符的值。在我的示例中,我将使用Zürich的城市名称,并且在尝试插入此信息时到MySQL数据库,我收到以下错误:PHP/MySQL特殊字符问题
“不正确的字符串值:‘\ xFCrich ...’列...”
所以,我已经做了以下的,但它仍然显示同样的错误信息:
$arrSearch = array('\xE4','\xF6','\xFC','\xC4','\xD6','\xDC','\xDF');
$arrReplace = array('ä','ö','ü','Ä','Ö','Ü','ß',);
$City=str_replace($arrSearch, $arrReplace, $City);
如果我做$市的回声,我得到如下: Zrich(矩形块)
我已经尝试了以及hex2bin(),但我只是得到一个白页,并没有插入到数据库中。仅供参考,DB排序规则在utf8mb4_general_ci中,setlocale(LC_ALL,'en_EN')在php文件中设置。所有的php文件都被编码为UTF8,chatset的设置如下:mysql_set_charset('utf8mb4',$ link);
我必须承认,我有点失落。有没有人有如何解决这个问题的线索? 谢谢。
编辑:托管这个应用程序的服务器运行在2008R2/IIs 7.5下,我找到了微软的这个KB。我会尝试修补程序和注册表修改,但它没有奏效。 http://support.microsoft.com/kb/2277918/
你尝试过W/O替换字符,并把UTF8元标记鉴于身边吗? –
你不能改变你的数据库整理到utf8 unicode? – Dexa
将您的排序规则更改为UTF-8,这些问题将消失。 'ü'和'\ FC'对于MySQL来说是一回事,这就是为什么你的修复无效。 –