8

我已经阅读了一些其他问题,尝试了答案,但最后没有得到任何结果。我得到的是例如这个

Μήπως θα έπρεπε να � ...

我无法删除那个奇怪的问号。我所做的是获取 RSS 提要的内容,该提要也被编码为 <?xml version="1.0" encoding="UTF-8"?>使用希腊语作为内容。

有没有什么办法解决这一问题?

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<div><?php
    $entry->description = strip_tags($entry->description);
    echo mb_substr($entry->description, 0, 490);
?> ...</div>
4

3 回答 3

18

这是答案

mb_substr($entry->description, 0, 490, "UTF-8");
于 2011-07-10T23:26:05.560 回答
12

我相信问题出在您的编码上。您输出 UTF-8 但您的浏览器无法解释其中一个字符。我过去所知道的问号符号实际上是由浏览器生成的,所以没有搜索和替换......这是关于修复你的编码或在输出之前从字符串中消除未知字符......

如果您可以访问数据源,那么您可能需要检查数据库设置以确保其编码正确...如果没有,那么您必须找到某种方法来使用 php 转换数据...不是一个简单的任务...

也许:

mb_convert_encoding($string, "UTF-8");
于 2011-07-10T05:39:16.690 回答
0

您是否尝试过使用这些看似多余的多字节安全字符串函数,它们不在 php 核心中?

http://code.google.com/p/mbfunctions/

看来他们提供了这样的 mb_strip_tags() 函数:

if (! function_exists('mb_strip_tags'))
{
   function mb_strip_tags($document,$repl = ''){
      $search = array('@<script[^>]*?>.*?</script>@si',  // Strip out javascript
                     '@<[\/\!]*?[^<>]*?>@si',            // Strip out HTML tags
                     '@<style[^>]*?>.*?</style>@siU',    // Strip style tags properly
                     '@<![\s\S]*?--[ \t\n\r]*>@'         // Strip multi-line comments including CDATA
      );
      $text = mb_preg_replace($search, $repl, $document);
      return $text;
   }
}
于 2011-07-10T05:34:09.747 回答