Я озадачен тем, почему это произойдет.
Если я ввожу текст, такой как «ÄÖÜß» (который сохраняется в БД как таковой), но затем преобразуется в html-сущности, когда я запускаю
$html['address_array'] = array_map("html_entity_decode", $html['address_array']);
Это преобразует html-сущности «ÄÖÜß» в «ƒ ÷‹ S », а не« ÄÖÜß », что является желаемым результатом.
У вас проблема с кодировкой текста. Скорее всего, ваш текст интерпретируется как 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"]
);
Других решений пока нет …