Кодировка. Из ISO-8859-1 в UTF-8.

evolution

Новичок
Кодировка. Из ISO-8859-1 в UTF-8.

Есть xml в кодировке ISO-8859-1, которые нужно заносить в БД в UTF-8.

В xml есть данные типа "Men’s Champagne" (с кавычками, апостофами и т.д.)
Если перекодирую с iconv() и потом mysql_real_escape_string(), то лезут мусорные символы типа Â и ’

Что не так делаю?
 

evolution

Новичок
Парсю xml с помощью simplexml
А как понять в какой кодировке вытаскиваются данные?

В прочем убирание из кода куска с iconv() проблему не решает =(
Но и ничего в принцепе не меняется... поэтому думаю что зря я перекодирую в юникод.

Вообщем основная проблема это то что
mysql_real_escape_string() из Men’s Champagne делает Men’s Champagne.
А точнее из апострофа делает прямоугольник (форум не совсем корректно отображает).

-~{}~ 16.07.07 10:52:

Ещё прикольней что форум отображает апостроф правильно...
хотя я копировал сюда прямоугольник из нотпада...

В Navicat`e и PhpMyAdmin`e вообще на месте апострофа стоит знак вопроса.
 

planarik

Новичок
Потеря символов может происходить если таблицы созданы при кодировке, отличной от UTF8. MySQL при обмене перекодирует из кодировки соединения в кодировку таблицы и наоборот. Например - кодировка соединения UTF8 кодировка таблиц latin1 - в этой ситуации некоторые символы могут быть потеряны.
 

evolution

Новичок
planarik
Таблица в UTF8.
Но дело не в БД почти на 100%.
Т.к. я перед добавлением данных в БД проверяю их и проблемы возникают уже на этом этапе.
 

baev

‹°°¬•
Команда форума
из апострофа делает прямоугольник
— это у Вас не «апостроф», а «right single quotation mark» (правая одиночная кавычка).
И этот символ отсутствует в не-юникод шрифтах.
 

evolution

Новичок
Ну проблема то не в шрифтах вроде...
Потому как например в FireFox`e если открыть xml-ку то всё отображается ОК.
А если вывожу данные после парсинга, то right single quotation mark теряется. в Internet Explorer`e и нотпаде этот символ заменяеся на вертикальный прямоугольник...
 

baev

‹°°¬•
Команда форума
Есть xml в кодировке ISO-8859-1, которые нужно заносить в БД в UTF-8.

В xml есть данные типа "Men’s Champagne" (с кавычками, апостофами и т.д.)
В ISO-8859-1 символа "right single quotation mark" нет.
Разбирайтесь, в какой кодировке на самом деле у Вас файл.

http://en.wikipedia.org/wiki/ISO-8859-1#Code_table
 

evolution

Новичок
baev
И действительно...
XML я вытаскиваю со стороны... в нём чётко прописано <?xml version="1.0" encoding="iso-8859-1" ?>

Вообщем решил проблему с помощью utf8_decode
Всем спасибо БОЛЬШОЕ!
 
Сверху