Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Данные их XML в Бд MySQL [2]
Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
программа сохраняет просто только в windows-1251, и в час их порядком 60 файлов, просто устану каждый раз менять строку в каждом файле... а другого выхода из положения нет?
Мелкий
Отправлено: 12 Июля, 2013 - 12:11:55
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Если в XML указана верно кодировка (<?xml version="1.0" encoding="windows-1251"?>), то simplexml сам конвертирует данные в UTF8.
----- PostgreSQL DBA
EuGen
Отправлено: 12 Июля, 2013 - 12:21:58
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Противоречие? Если в хедлайне cp1251, то трактоваться документ и будет в "верной кодировке", то есть в cp1251
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Мелкий
Отправлено: 12 Июля, 2013 - 12:26:43
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
EuGen, simplexml может читать документы в разных кодировках (для этого бинарно XML должен соответствовать заявленной в нём же кодировке), но апи у него всегда оперирует UTF8.
Если прочтённый файл не в UTF8 - simplexml перекодирует данные в UTF8.
----- PostgreSQL DBA
EuGen
Отправлено: 12 Июля, 2013 - 12:28:07
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Мелкий пишет:
(для этого бинарно XML должен соответствовать заявленной в нём же кодировке)
О том и речь.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Мелкий
Отправлено: 12 Июля, 2013 - 12:40:34
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
EuGen, о том и речь, что iconv не нужен для этой задачи:
SofiaKit пишет:
index.php у меня в Юникоде UTF-8 а вот сам xml в windows-1251, как можно сделать читабельным xml без вмешательства руками?
Ничего специально делать здесь не нужно.
----- PostgreSQL DBA
EuGen
Отправлено: 12 Июля, 2013 - 12:44:31
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
-или речь о том, что:
* Файл XML в cp1251
* Хедлайн сообщает о cp1251
* Загружаем в php-файле, который в UTF
? Если так, то да, действий не требуется. Но тогда речь только об определении XML вне самого скрипта (иначе он тоже будет в кодировке скрипта) - может быть, из-за этого возникло недопонимание.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Мелкий
Отправлено: 12 Июля, 2013 - 12:51:56
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
EuGen, ну так:
EuGen пишет:
file_in_utf8
EuGen пишет:
encoding="windows-1251"
А если XML заявлен как windows-1251 и сохранён так же, то при загрузке в simplexml все данные будут корректно конвертированы в UTF8.
----- PostgreSQL DBA
EuGen
Отправлено: 12 Июля, 2013 - 12:57:46
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Мелкий пишет:
А если XML заявлен как windows-1251 и сохранён так же, то при загрузке в simplexml все данные будут корректно конвертированы в UTF8.
EuGen пишет:
-или речь о том, что:
* Файл XML в cp1251
* Хедлайн сообщает о cp1251
* Загружаем в php-файле, который в UTF
? Если так, то да, действий не требуется.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
SofiaKit
Отправлено: 12 Июля, 2013 - 13:45:43
Частый гость
Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
вобщем буду откровенна:
задача:
Вытянуть некоторые данные, посчитать и занести в MySQL.
Как это должно присходить:
В определенную дирикторию складываются файлы такого типа: SesDataExport_13.05.22_09-08-35. xml
Крон 2 раза в день запускать должен php скрипт, который должен проверять наличие нового файла, и если он есть, то заносить данные в бд.
Структуру БД я примерно придумала, будет записываться имя файла, и если в БД не будет имени файла, то значит он новый... обрабатывается, записывается и все рады...
как видите задачу мне не легкую задали причем все надо в UTF8 записывать, а сам xml, зараза в 1251 ... жесть...
EuGen
Отправлено: 12 Июля, 2013 - 14:02:56
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
SofiaKit
Так в чём вопрос? Как разобрать xml - примеры смотрите выше, благо их в достатке. Как проверить, новый ли файл - Вы уже сами ответили на этот вопрос (помещение имени обработанного файла в таблицу БД). С кодировками тоже вопрос решён выше. Остаётся - проход по каталогу и сама запись в БД. Но это ведь тривиальные вещи, не так ли?
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
SofiaKit
Отправлено: 12 Июля, 2013 - 14:16:53
Частый гость
Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
верно, вроде все решено, вроде понятно... почти.. я так и не разобралась с кодировкой... впервые сталкиваюсь с такой задачей...
EuGen
Отправлено: 12 Июля, 2013 - 14:18:50
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
SofiaKit
Выжимка: если у Вас xml-файл в Windows-1251, в его первой строке тоже указана Windows-1251, то ничего делать не надо. Вообще ничего - спокойно используйте simplexml_load_file в своём скрипте (тот, который в UTF-8) - и всё будет в порядке, simplexml преобразует данные в UTF-8 сам.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
SofiaKit
Отправлено: 12 Июля, 2013 - 14:27:34
Частый гость
Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
так мне пишет вот так: 21.05.2013 9:29:32ааАбаИб аИаНаА а
и приходится вручную в IE устанавливать кодировку UTF8, а на автовыборе почему-то 1251 стоит.
Хотя в заголовок php я засунула mb_internal_encoding("UTF-8");
EuGen
Отправлено: 12 Июля, 2013 - 14:36:33
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
SofiaKit
Так при чём здесь отображение в браузере. То, что simplexml верно обработает данные, и то, как Вы их покажете - это разные вещи. Для верного отображения следует отсылать тег meta:
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.