当我获取字符串MySQL数据库时,如何从字符串中删除\ u00e2 \ u20ac \ u2122

时间:2015-01-13 13:51:57

标签: php mysql

在我的表中,表列名称是存储书籍描述的描述,当我从数据库中获取字符串时,字符串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。

1 个答案:

答案 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),替换字符。

如果您需要搜索数据库内容,那就是另一个问题。