我已经阅读了其他一些问题,尝试了答案,但最后没有得到任何结果。我得到的是例如这个
Μήπως θα έπρεπε να � ...
我无法删除那个奇怪的问号。我所做的是获取编码的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>
答案 0 :(得分:17)
这是答案
mb_substr($entry->description, 0, 490, "UTF-8");
答案 1 :(得分:12)
我认为问题出在您的编码上。您输出的是UTF-8但浏览器无法解释其中一个字符。我过去所知道的问号符号实际上是由浏览器生成的,因此没有搜索和替换....它是关于修复编码或在输出之前消除字符串中的未知字符...
如果您有权访问数据源,那么您可能需要检查数据库设置以确保其编码正确...如果没有,那么您将不得不找到使用php转换数据的方法。 ..不是一件容易的事......
也许:
mb_convert_encoding($string, "UTF-8");
答案 2 :(得分: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;
}
}