0

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

但是两者的输出字符串都没有改变

4

3 回答 3

3

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

你有两种可能性:

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

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

于 2013-09-20T14:06:45.433 回答
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 回答
0

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

于 2013-09-24T08:31:46.197 回答