我试图从mysql数据库中提取一些信息,然后json对其进行编码。我遇到了特殊字符的问题。我将从包含特殊字符的数据库中提取信息,但是当我使用PHP json_encode函数时,它无法编码并返回FALSE。
我已尝试过以下两种方法。
在我的查询中,我有这个:
CONVERT(item_stub.name USING utf8)
那似乎没有做任何事情。所以我在查询后添加了以下内容将数据转换为UTF8:
while($r = $db->fetch($result)){
$r[] = array_map('utf8_encode', $r);
这似乎处理非utf8单引号,但我仍然遇到商标符号的问题。
我也尝试过使用PHP htmlentities和htmlspecialchars函数,但这些函数也像json_encode一样失败
答案 0 :(得分:0)
尝试将
ENT_QUOTES
标记添加到htmlspecialchars()
。它会像你这样照顾单引号和双引号:
<?php
while($r = $db->fetch($result)){
$r[] = array_map(
'utf8_encode',
htmlentities(htmlspecialchars($r, ENT_QUOTES, 'UTF-8', true)));
// CODE CONTINUES... (IF ANY)...
}
$r = "™™™™@†©√∫∫~ªß¥ß∂ƒåßßå∑€ƒ∑€åå€∑€∑ƒ";
$s = htmlentities(htmlspecialchars($r, ENT_QUOTES, 'UTF-8', true));
var_dump($s);
//YIELDS:
'™™™™@†©√∫∫~ªß¥ß∂ƒåßßå∑€ƒ∑€åå€∑€∑ƒ' (length=196)
答案 1 :(得分:0)
在使用array_map函数之前必须确保。
答案 2 :(得分:0)
试试这个
json_encode($objectSubstitutions, JSON_UNESCAPED_UNICODE)