В каком случае будут специальные символы, такие как ÄÖÜß? быть закодирован в сущности и затем декодирован в «S»?

Я озадачен тем, почему это произойдет.
Если я ввожу текст, такой как «ÄÖÜß» (который сохраняется в БД как таковой), но затем преобразуется в html-сущности, когда я запускаю

$html['address_array'] = array_map("html_entity_decode", $html['address_array']);

Это преобразует html-сущности «ÄÖÜß» в «ƒ ÷‹ S », а не« ÄÖÜß », что является желаемым результатом.

0

Решение

У вас проблема с кодировкой текста. Скорее всего, ваш текст интерпретируется как Mac OS Roman — ÄÖÜß кодируется как ISO8859-1 C4 D6 DC DF; после декодирования как Mac OS Roman, это выглядит как ƒ÷‹fl, Последний персонаж отличается от вашего образца, но он достаточно близок, так что я подозреваю, что это совпадение.

Передать кодировку html_entity_decode — в идеале UTF-8 — и убедитесь, что на вашей странице используется соответствующий набор символов. Так как вы используете array_mapпередача кодировки немного неловко; если вы используете современную версию PHP, я бы порекомендовал:

$html["address_array"] = array_map(
function($x) {
return html_entity_decode($x, ENT_COMPAT, "UTF-8");
},
$html["address_array"]
);
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector