我的中文字符存储在我的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 );
但两者都有输出字符串不变
答案 0 :(得分:3)
您无法在 ISO-8859-1 字符集中输出中文字符。这根本不可能。
您有两种可能性:
为什么您的页面必须呈现为 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设置为不同的编码。