字符串中的未知字符,如â€

时间:2011-06-13 10:52:35

标签: php encoding

当我在网页上回显数据时,我收到了未知字符。 testing.doc包含

  

在其他市场之前买入“便宜”的股票

$data = file_get_contents('testing.doc');

$soap->SetLocalTemplate(
   array(
        'template' => base64_encode($data),
        'format'   => 'doc'
    )
);

$soap->CreateDocument();
        $result = $soap->RetrieveDocument(
            array(
                'format' => 'txt'
            )
        );

$data = $result->RetrieveDocumentResult;
file_put_contents(file.txt', base64_decode($data));

如果我读取文本文件file.txt,我会得到存储在testing.doc中的确切文本,但如果我喜欢这样:

echo base64_decode($data);

我得到了

  

在市场其他部分之前购买股票“收盘”

现在有一些未知的角色。请告诉我如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

看起来像是字符编码问题。

如果您使用的网页编码设置与您从中获取内容的来源不同,那么您将获得如上所述的有趣字符。

答案 1 :(得分:0)

您的网页可能被视为ISO-8859-1编码,但XML数据采用UTF-8格式。

将输出编码更改为UTF-8,或使用iconv()将其转换为ISO-8859-1。

答案 2 :(得分:0)

正如其他人所提到的,XML数据具有UTF-8编码。

要将内容回显到浏览器,您应该设置标题,尤其是当您知道要尝试回复的内容的编码时:

header('content-type:text/html;charset=utf8');

在调用echo之前就是这样。例如:

/* get content, set it to $content */

header('content-type:text/html;charset=utf8');
echo $content;