我有一个简单的mysql查询:
$query = addslashes($_REQUEST['query']);
$sql = mysql_query ("SELECT * FROM countries WHERE name LIKE '%{$query}%'");
它适用于任何$查询,除非它有特殊字符。
假设我正在寻找“Åland群岛”或“科特迪瓦”,它不会取回任何东西。
我也试过没有addslashes,但它只是没有改变任何东西。
感谢您的帮助。
修改
这是我在Mysql中设置的变量:
character_set_client | utf8
character_set_connection | utf8
character_set_database | utf8
character_set_filesystem | binary
character_set_results | utf8
character_set_server | latin1
character_set_system | utf8
字符集服务器是我无法改变的。它似乎是由我的托管设置的。 任何改变这种情况的尝试都会给我一条消息,告诉我我没有超级权限可以让我这样做。
答案 0 :(得分:1)
在mysql_query之后使用以下:
header('Content-type: text/html; charset=utf-8');
答案 1 :(得分:0)
我得到了答案,但问题不是我认为的那个......
它不是关于mysql本身,而是关于我用来输出MySQL结果的json_encode。
所以,我不得不对输入数据进行utF8解码......
$query = utf8_decode($_REQUEST['query']);
然后我做了我的Mysql查询,最后输出我的结果:
$response = array_map("utf8_encode", $response);
echo json_encode ($response);