0

mysql データベースに utf-8 で格納されている中国語の文字がありますが、charset=ISO-8859-1 として出力する必要がある Web ページにそれらを表示する必要があります。

ラテン語でレンダリングすると、テスト文字列は "dsfsdfsdf åšä¸€ä¸ªæµ‹è¯•" のようになります。

$encoding が入力文字列または目的の出力文字列のエンコーディングを参照しているかどうかを php ドキュメントから判断できないため、次の方法で htmlentities を使用してみました。

$row['admin_comment']=htmlentities( $row['admin_comment'] ,
                        ENT_COMPAT | ENT_HTML401 ,
                        'ISO-8859-1' , 
                        false  );

$row['admin_comment']=htmlentities( $row['admin_comment'] ,
                        ENT_COMPAT | ENT_HTML401 ,
                        'UTF-8' , 
                        false  );

ただし、どちらも出力文字列は変更されていません

4

3 に答える 3

3

ISO-8859-1文字セットで漢字を出力することはできません。それは単に不可能です。

2 つの可能性があります。

  1. UTF-8に固執する(推奨)
  2. 中国語と互換性のある別の文字セットを選択します(私の記憶が正しければBIG5 )

ページをLATIN-1としてレンダリングする必要があるのはなぜですか? この要件は非常に奇妙だと思います。私の提案は、どこでも (DataBase エンコーディングから HTML レンダリングまで) UTF-8文字セットを使用することです。それはあなたに将来の多くの苦痛を救うでしょう。

于 2013-09-20T14:06:45.433 に答える
0

ページの iframe を別のエンコーディングに設定できることがわかりました。

于 2013-09-24T08:31:46.197 に答える
0

このhtmlentities関数は、文字を数字エンティティに変換しません。そのために、次のmb_encode_numericentity関数を使用できます。

$row['admin_comment'] = mb_encode_numericentity($row['admin_comment'], 
                            array(0xFF, 0xFFFF, 0, 0xFFFF), "UTF-8");

ただし、おそらく UTF-8 への移行を検討する必要があります。

于 2013-09-20T14:00:38.473 に答える