当使用Twitter API时出现奇怪字符和编码问题

6

我开始在我的服务器上开发自己的简单twitter客户端(旨在绕过某些政府办公室设立的twitter.com阻止规则)。

请查看此图片,以便您可以看到重音符号被转换为奇怪的符号

我的应用程序截图

这是我正在使用的Twitter PHP类by Tijs Verkoyen

这是我的标题代码,它是utf-8编码。有人能指点我如何解决吗?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>


你的链接触发了谷歌的“危险红页”。不过,无论如何,你是通过什么方式获取请求的返回结果呢?是通过rss、json还是xml?根据http://apiwiki.twitter.com/Things-Every-Developer-Should-Know上的信息,它只提到以xml形式调用时使用utf-8编码,但没有提及其他两种格式,所以我不确定是否相关。 - Syntax Error
我以为默认是XML格式,但类文档并没有具体说明...我会继续研究。http://classes.verkoyen.eu/twitter/docs#getfriendstimeline - Enrique
你是否遇到了特定于浏览器的问题?例如,我曾经在一些Linux浏览器上遇到过类似的问题。你还应该检查实际输出的文本是否为UTF-8编码,而不仅仅是HTML页面标记为UTF-8。 - abraham
我在尝试应用程序时,所有浏览器都遇到了同样的问题。Chrome、Opera、Safari、IE、Firefox(都在Windows上,目前没有*nix)。我该如何检查我输出的实际文本是否为UTF-8,而不仅仅是带有元标记的HTML?谢谢。 - Enrique
2个回答

6

尝试在PHP中使用utf8_encode()函数


@DimitarChristoff:我应该把它放在哪里?用utf8_encode()需要写什么?这样做可以吗: <meta http-equiv="Content-Type" content="text/html; charset=utf8_encode()" /> - xan
无字符集。这是在输出之前处理数据的时候。例如:$tweet['text'] = utf8_decode($tweet['text']); - Dimitar Christoff
我在来这里之前采用了这种方法。虽然它似乎有效,但它会将花式引号(相当于ldquo,rdquo的字符)转换为字符串中的问号。 - Mark J. Reeves

1
最好的方法是避免麻烦,如果您可以使用某种JSON格式传递所有Twitter文本(即Twitter API也提供JSON格式),并将这些JSON传递到PHP 5函数中。
json_decode(jsonStr);

json_decode 自动转换为 utf8 编码,这可以避免您编写额外的字符编码代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接