在PHP中为SQL查询转换URL中的UTF-8字符

时间:2012-11-27 18:14:29

标签: php wordpress utf-8

我在Wordpress博客上运行SQL查询以获取帖子的json提要。这是我的代码:http://pastebin.com/jvaM9ySr

它工作正常,但是一些帖子的网址是我认为的UTF-8特殊字符,如

ranking-of-the-country%e2%80%99s-101-best-desserts

我猜博客编辑器粘贴在一个花哨的撇号中。

其他示例在商标符号的url中间有%e2%84%a2,而希腊sigma字母甚至%cf%83。

我想转换它们以显示json feed中的实际特殊字符。

我将此用于match the urls in the Google Analytics API,相应的Google Analytics网址包含特殊字符本身,而不是代码如下:

 ranking-of-the-country’s-101-best-desserts

所以由于这个特殊的字符问题,这几个案例不匹配。

我试过在pastebin中的代码中的各个地方使用utf8_encode和utf8_decode而没有运气。

任何人都有任何想法?谢谢!

2 个答案:

答案 0 :(得分:0)

你需要的只是

$text = "ranking-of-the-country%e2%80%99s-101-best-desserts";
echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;

答案 1 :(得分:0)

我在另一种编程语言中遇到过与你类似的问题。

这不是utf8 encode,而是url encode

尝试使用:

urlencode(string)

urldecode(string)

在2个案例中(使用正确的utf字符解码所有%char更改)。

您可以在此处找到更多信息和示例:http://php.net/manual/en/function.urlencode.php

<强>更新: 对于你的代码:我还没有测试过,但你必须在这里存储响应值时解码url

    while($r = mysql_fetch_assoc($sth)) {
    if $r is a url
    $rows = decode($r);
    else
    $rows[] = $r;   
    }

OR 区分代码末尾的打印(类似于之前的代码):为数组中的每个变量做适当的打印(当你“抓住”“url”进行解码时),这里:

print strip_tags(json_encode($rows));