2014-10-06 57 views
1

我使用PHP 5.4.31和MySQL版本5.5.39-MariaDB。我的数据库采用utf8_general_ci整理,我的一些字段包含拉丁变体,如á和é。PDO语句中的变体字符在IE9中不起作用

我在我的PDO语句中直接使用mysql:charset = utf8,它在Chrome和FireFox(PC,Mac和平板电脑)中工作正常。但在IE9中不起作用。

如果我使用的URL如“url_of_page.php?firstName = Joe & lastName =González”IE9找不到记录。我试过使用$ stmt-> execute(“set names utf8”);我试过使用$ stmt-> execute(“set names utf8”);这没有什么区别。不明白为什么这是一个浏览器问题。任何想法为什么IE有问题?

+0

你确定那些字符在$ _GET中干净利落吗?如果你使用'echo $ fName',它们是否显示正确? – 2014-10-06 21:50:13

+0

我看到它不是。当我在IE编码菜单中打开自动选择时,它会正确显示。但是,当我刷新页面时,变体显示不正确(小方框)。我注意到,当我将鼠标悬停在IE中的某个URL上时,这些变体不会显示在URL中(显示在浏览器底部),但是一旦我真正进入页面,变体字符就会显示在URL中。变量字符在刚刚从数据库中提取时显示,但不在$ _GET中。 – Brent 2014-10-06 22:18:54

回答

1

问题是我在分配URL变量时没有使用urlencode,而且我的URL不是有效的ASCII格式。使用进行urlencode我正确的URL后是这样的:

url_of_page.php的firstName =乔&的lastName =冈萨雷斯%C3%A1lez

,而不是

url_of_page.php的firstName =乔&的lastName =冈萨雷斯?

+0

您应该将自己的答案标记为已接受,以便将事情关闭好! – miken32 2014-10-07 04:17:02