2014-02-27 119 views
0

我正面临特殊字符的问题。我从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/

+0

你尝试过W/O替换字符,并把UTF8元标记鉴于身边吗? –

+0

你不能改变你的数据库整理到utf8 unicode? – Dexa

+0

将您的排序规则更改为UTF-8,这些问题将消失。 'ü'和'\ FC'对于MySQL来说是一回事,这就是为什么你的修复无效。 –

回答

0

好了!是非常愚蠢的....我使用该插入FPDF并在FPDF中正确显示特殊字符,我不得不设置iconv('UTF-8',$ charset,$ _REQUEST ['City']); 对不起,再次感谢您的协助!现在就像一个魅力

1

将字符集设置为utf8。

+0

我将排序规则更改为utf8_general_ci,并将其保存为来自MsSQL数据库(Zürich),添加了“mysql_set_charset('utf8',$ link)”,问题仍然相同。我错过了什么? – poypoy

+0

试图添加utf8 php头。 ('Content-Type:text/html; charset = utf-8'); –

+0

它已经在那里,它仍然无法正常工作。奇怪的事情。 – poypoy