8

他のいくつかの質問を読んで、答えを試しましたが、最後に結果が得られませんでした。私が得るのは、たとえばこれです

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

その変なクエスチョン マークを削除することはできません。私がしていることは、コンテンツに <?xml version="1.0" encoding="UTF-8"?>ギリシャ語を使用するようにエンコードされた RSS フィードのコンテンツを取得することです。

これを修正する方法はありますか?

<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 ですが、ブラウザは文字の 1 つを解釈できません。過去に知っていた疑問符記号は、実際にはブラウザーによって生成されるため、検索と置換はありません....出力する前に、エンコードを修正するか、文字列から不明な文字を削除することです...

データのソースにアクセスできる場合は、DB 設定をチェックして、適切にエンコードされていることを確認することをお勧めします...そうでない場合は、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 に答える