【问题标题】:How to display utf8 chinese in html with php如何用php在html中显示utf8中文
【发布时间】:2023-04-07 06:31:01
【问题描述】:

我的 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  );

但两者的输出字符串不变

【问题讨论】:

  • 你试过 echo utg8_decode 吗?
  • ISO-8859-1中不存在汉字

标签: php html utf-8


【解决方案1】:

您不能在 ISO-8859-1 字符集中输出中文字符。这简直是​​不可能的。

你有两种可能:

  1. 坚持 UTF-8(推荐)
  2. 选择另一个与中文兼容的字符集(BIG5如果我没记错的话)

为什么您的页面必须呈现为 LATIN-1?我觉得这个要求很奇怪。我的建议是在任何地方(从数据库编码到 HTML 渲染)使用 UTF-8 字符集。它会在未来为你省去很多痛苦。

【讨论】:

  • 出于某种原因,我原以为有中文字符的 html 实体代码,但现在我找不到它。它是一个包含 2000 多行的旧页面,每个文件中包含 php、html 和 javascript,因此这是我的第一个方法。
  • 有一大堆(数千个或更多)汉字......每个人都有一个 html 实体是一项不可能完成的任务!
【解决方案2】:

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

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

不过,您可能应该考虑迁移到 UTF-8。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 2015-08-23
      相关资源
      最近更新 更多