Как отобразить utf8 китайский в HTML с PHP

0

У меня есть китайские символы, хранящиеся в моей базе данных 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  );

Но обе строки вывода неизменны

Теги:
utf-8

3 ответа

3
Лучший ответ

Вы не можете выводить китайский символ в кодировке ISO-8859-1. Это просто невозможно.

У вас есть 2 возможности:

  1. придерживаться UTF-8 (рекомендуется)
  2. выберите другую китайско-совместимую кодировку (BIG5 Если моя память служит мне правильной)

Почему ваша страница ДОЛЖНА отображаться как LATIN-1? Я нахожу это требование очень странным. Мое предложение - использовать EVERYWHERE (от кодирования DataBase до HTML-рендеринга) кодировку UTF-8. Это спасет вас от боли в будущем.

  • 0
    По какой-то причине я думал, что для китайских иероглифов существуют html-коды сущностей, но сейчас я их не нахожу Это устаревшая страница, содержащая более 2000 строк во многих файлах с php, html и javascript в каждом файле, так что это был мой первый подход.
  • 0
    Есть много (тысячи или больше) китайских иероглифов ... Невозможно создать HTML-сущность для каждого из них!
0

Оказывается, вы можете установить iframe на своей странице на другую кодировку.

0

Функция htmlentities не преобразует символы в свои числовые объекты символов. Для этого вы можете использовать функцию mb_encode_numericentity:

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

Вы, вероятно, должны изучить миграцию на UTF-8.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню