我需要阅读DB中的一些以这种方式强调的值:“Cafeter圣保罗”,其中真正的单词是"Cafetería“。
当我将json传递给php脚本时,如下所示:
{"attribution":"CafeterÃa"}
$json = file_get_contents('php://input');
$json_post = json_decode($json, true);
$attribution = $json_post['attribution'];但是它读错了,没有给我任何来自DB的行。我使用PDO从DB读取。
$db = new PDO("mysql:host=$hostDB;dbname=$nameDB;charset=UTF-8", $userDB, $passwordDB, array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$stmt = $db->prepare("SELECT id, title, lat, lon FROM POI_Table WHERE attribution=:attribution");
$stmt->execute(array(':attribution'=>$attribution));如果我在HEIDI中执行相同的查询,但是按照json文件给出的值编写值,它就能工作。在查询中使用之前,我应该如何转换值?
发布于 2014-05-02 08:22:28
您正在为mysql设置错误的编码方式。
这是没有破折号的utf8
另一个答案本质上是错误的,因为它会导致双重额外的编码,并且只适用于lat1字符。
发布于 2014-05-02 08:10:13
在你的代码中做这个怎么样?
$json_post = json_decode(utf8_decode($json), true);https://stackoverflow.com/questions/23423461
复制相似问题