2

別の Web サイトの RSS フィードから最新の投稿をプレビューしようとしています。フィードは UTF-8 でエンコードされていますが、ウェブサイトは ISO-8859-1 でエンコードされています。タイトルを表示するとき、私は使用しています;

 $post_title = 'Blogging – does it pay the bills?';

 echo mb_convert_encoding($post_title, 'iso-8859-1','utf-8');

 // returns: Blogging ? does it pay the bills?
 // expected: Blogging - does it pay the bills?

私が期待しているハイフンは通常のマイナス記号ではなく、大きなお尻のユーバー ダッシュであることに注意してください。とにかく、数ピクセル長くなります。:)私のキーボードはその文字を生成できないため、他にどのように説明すればよいかわかりません...

4

4 に答える 4

5

mb_convert_encoding内部エンコーディングのみを変換します。実際には、文字のバイト シーケンスをある文字セットから別の文字セットに変更することはありません。そのためにはiconvが必要です。

mb_internal_encoding( 'UTF-8' );
ini_set( 'default_charset', 'ISO-8859-1' );

$post_title = 'Blogging — does it pay the bills?'; // I used the actual m-dash here to best mimic your scenario

echo iconv( 'UTF-8', 'ISO-8859-1//TRANSLIT', $post_title );

または、他の人が言ったように、範囲外の文字を html エンティティに変換するだけです。

于 2009-10-14T15:58:55.007 に答える
4

Em ダッシュ (—) のことだと思います。ISO-8859-1 にはこの文字が含まれていないため、そのエンコーディングに変換することはあまりありません。

htmlentities()を使用することもできますが、公開のために ISO-8859-1 から UTF-8 に移行することをお勧めします。

于 2009-10-14T15:33:38.910 に答える
3
于 2009-10-14T16:06:00.490 に答える
1

これはおそらく em ダッシュ (U+2014) であり、ハイフンは別の文字であるため、エンコードを変換していません。つまり、そのような文字を検索して手動で置換する必要があります。

さらに良いことに、Web サイトを UTF-8 に切り替えるだけです。これは、Latin-1 とほぼ一致しており、2009 年の Web サイトにより適しています。

于 2009-10-14T15:43:57.477 に答える