Проблемы с кодировкой при сохранении данных rss в таблицу mysql - PullRequest
1 голос
/ 30 ноября 2011

В данный момент я читаю RSS-каналы, которые могут быть закодированы любым типом символов, используя simplexml_load_file();

Эти каналы затем перебираются в php, а некоторые части вставляются в базу данных mysql utf8 со всеми таблицами utf8 general.

При вставке в таблицы видно, что 'заменяется на ’ и - заменяется на –

Эти странные символы затем отображаются, когда они возвращаются из таблицы и отображаются в php-файле.

Я пробовал и utf8_decode, и utf8_encode при вставке и выборе из базы данных, но это не помогает, что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 30 ноября 2011

поставьте mysql_query('SET CHARACTER SET utf8'); перед вашей вставкой и выберите запросы

0 голосов
/ 11 мая 2012

1001 * попробовать *

$xml = file_get_contents($file);
$xml = iconv("UTF-8", "UTF-8//IGNORE", $xml);
simplexml_load_string($xml);
0 голосов
/ 30 ноября 2011

Что такое набор символов и сопоставление по умолчанию для таблицы БД, в которую вы вводите данные?

[ПРАВИТЬ]

Найдено здесь: http://www.php.net/manual/en/function.simplexml-load-file.php#92969

Neil Art Neilanddeb Dort Com 17 августа 2009 г. 01: 00
Поскольку кодировка моего XML-файла - UTF-8, а кодирование моей веб-страницы - iso-8859-1, я получаю странные символы, например, вместоправильная одинарная кавычка.

Решение этого оказалось трудным для поиска, но очень простым в реализации.

http://uk3.php.net/manual/en/function.iconv.php

Использование функции iconv ()Вы можете конвертировать из одной кодировки в другую, опция TRANSLIT, кажется, работает лучше всего для того, что мне нужно.Вот мой пример:

<?php
// convert string from utf-8 to iso8859-1
$horoscope = iconv( "UTF-8", "ISO-8859-1//TRANSLIT", $horoscope );
?>

Я нашел решение на этой странице ...
http://coding.derkeiler.com/Archive/PHP/comp.lang.php/2008-04/msg00365.html
Надеюсь, это поможет

...