У меня есть таблица mysql, а некоторые строки в столбце содержат символ. Я должен повторить содержимое таблицы как xml. Я использую этот utf8_encode($row['data'])
и данные отвечают как Â'
. Я использовал iconv, а также попытался сделать str_replace(''','somechar',$row['data'])
но теперь он работает.
Похоже, все, что вам нужно сделать, это echo $row['data'];
, данные находятся в Windows-1252, а заголовки вашей страницы также находятся в Windows-1252. Не требуется преобразование в UTF-8.
Если вы не понимаете, что ваши данные находятся в windows-1252, и поэтому вы установили encoding="UTF-8"
в свой xml, вы shoiuld установите его в encoding="Windows-1252"
.
mysql_set_charset( "utf8" ); // or $mysqli->set_charset( "utf8" );
Прежде чем делать какие-либо запросы.
После этого вам нужно исправить заголовки http:
<?php header( "Content-type: application/xml; charset=utf-8");
И, конечно, не вызывать utf8_decode
. Никогда не вызывать utf8_decode
или utf8_encode
если вы действительно не знаете, что делаете. Для начала эти функции работают над преобразованиями ISO-8859-1-> UTF-8 (и наоборот) (реальный ISO-8859-1, а не браузер «ISO-8859-1», который на самом деле является только Windows-1252) и не являются волшебной юникодной палочкой.
Есть много других вещей, которые нужно сделать, если вы хотите использовать маршрут utf-8, но эти два будут устранять вашу непосредственную проблему.