У меня есть китайские символы, хранящиеся в моей базе данных mysql в utf-8, но мне нужно показать их на веб-странице, которая должна выводиться как charset = ISO-8859-1
При визуализации на латинице моя тестовая строка выглядит так: "dsfsdfsdf åšä¸ € 个æμ <è¯ •"
Я попытался использовать htmlentities следующими способами, потому что я не могу сказать из php docs, если $ 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 );
Но обе строки вывода неизменны
Вы не можете выводить китайский символ в кодировке ISO-8859-1. Это просто невозможно.
У вас есть 2 возможности:
Почему ваша страница ДОЛЖНА отображаться как LATIN-1? Я нахожу это требование очень странным. Мое предложение - использовать EVERYWHERE (от кодирования DataBase до HTML-рендеринга) кодировку UTF-8. Это спасет вас от боли в будущем.
Оказывается, вы можете установить iframe на своей странице на другую кодировку.
Функция htmlentities
не преобразует символы в свои числовые объекты символов. Для этого вы можете использовать функцию mb_encode_numericentity
:
$row['admin_comment'] = mb_encode_numericentity($row['admin_comment'],
array(0xFF, 0xFFFF, 0, 0xFFFF), "UTF-8");
Вы, вероятно, должны изучить миграцию на UTF-8.