在我的表中,表列名称是存储书籍描述的描述,当我从数据库中获取字符串时,字符串Unicode \ u00e2 \ u20ac \ u2122也在我的字符串中我想从字符串中删除这些值。 贝娄是我的PHP代码
case 'bookdetails': {
$query = "SELECT * FROM book";
$result = mysql_query($query);
$num = mysql_num_rows($result);
while($rows = mysql_fetch_assoc($result)) {
$response["Book"]["Id"] = $rows['id'];
$response["Book"]["BookName"] = $rows['bookName'];
$response["Book"]["Description"] = strip_tags($rows["description"]);
}
if($num > 0) {
$response["success"] = 1;
} else {
$response["error"] = 1;
$response["Error_msg"] = "No record founds.";
}
echo json_encode($response);
break;
}
输出:说明: 之后他会把它们塞进滚筒干燥机等等......
我想从输出字符串中删除\ u00e2 \ u20ac \ u201c。
答案 0 :(得分:1)
这些是Unicode代码点。它们可能是您数据库中的重要内容。
你可以试试这个:
$response["Book"]["Description"] = strip_tags(htmlentities($rows["description"]));
但是,如果您使用JSON将此信息发送到浏览器,则浏览器很可能会做正确的事情。例如,\ u20ac是€和\ 201c是“(左双引号)。 htmlentities()
api调用会将unicode代码点转换为它们的实体等价物,这使它们更容易阅读。
\u20ac €
\201c “
如果您希望将文本字符串转换为8位latin1(iso8859-1)字符集,则可以在SELECT
语句中使用此类子句。
SELECT CONVERT(description USING latin1) description,
CONVERT(title USING latin1) title
如果你想要老式的7位ASCII,你可以这样做
SELECT CONVERT(description USING ascii) description ...
如果数据中的代码点可以在目标字符集中表示,则它们将被转换。否则它们将被替换为?
(0x3f),替换字符。
如果您需要搜索数据库内容,那就是另一个问题。