如何用PHP在html中显示utf8中文

时间:2013-09-20 13:54:21

标签: php html utf-8

我的中文字符存储在我的mysql数据库中的utf-8中,但我需要在必须输出为charset = ISO-8859-1的网页上显示它们

当用拉丁文呈现时,我的测试字符串看起来像这样“dsfsdfsdfåšä¸€ä¸ªæμ<试”

我尝试过以下方式使用htmlentities,因为我无法从php文档中判断$ encoding是否指向输入字符串或所需输出字符串的编码。

$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  );

但两者都有输出字符串不变

3 个答案:

答案 0 :(得分:3)

您无法在 ISO-8859-1 字符集中输出中文字符。这根本不可能。

您有两种可能性:

  1. 坚持 UTF-8 (推荐)
  2. 选择另一个与中文兼容的字符集( BIG5 如果我的记忆对我有用的话)
  3. 为什么您的页面必须呈现为 LATIN-1 ?我觉得这个要求很奇怪。我的建议是使用 UTF-8 字符集的所有(从DataBase编码到HTML呈现)。它将为你节省很多痛苦。

答案 1 :(得分:0)

htmlentities函数不会将字符转换为其数字字符实体。为此,您可以使用mb_encode_numericentity功能:

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

你可能应该考虑迁移到UTF-8。

答案 2 :(得分:0)

事实证明,您可以将页面中的iframe设置为不同的编码。