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]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (4): « 1 [2] 3 4 »   

> Без описания
SofiaKit
Отправлено: 12 Июля, 2013 - 12:07:27
Post Id


Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




программа сохраняет просто только в windows-1251, и в час их порядком 60 файлов, просто устану каждый раз менять строку в каждом файле... а другого выхода из положения нет?
 
 Top
Мелкий Супермодератор
Отправлено: 12 Июля, 2013 - 12:11:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Если в XML указана верно кодировка (<?xml version="1.0" encoding="windows-1251"?>), то simplexml сам конвертирует данные в UTF8.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 12 Июля, 2013 - 12:21:58
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Мелкий пишет:
указана верно кодировка (<?xml version="1.0" encoding="windows-1251"?>)

Мелкий пишет:
simplexml сам конвертирует данные в UTF8.

Противоречие? Если в хедлайне cp1251, то трактоваться документ и будет в "верной кодировке", то есть в cp1251


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 12 Июля, 2013 - 12:26:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




EuGen, simplexml может читать документы в разных кодировках (для этого бинарно XML должен соответствовать заявленной в нём же кодировке), но апи у него всегда оперирует UTF8.
Если прочтённый файл не в UTF8 - simplexml перекодирует данные в UTF8.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 12 Июля, 2013 - 12:28:07
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Мелкий пишет:
(для этого бинарно XML должен соответствовать заявленной в нём же кодировке)

О том и речь.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 12 Июля, 2013 - 12:40:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




EuGen, о том и речь, что iconv не нужен для этой задачи:
SofiaKit пишет:
index.php у меня в Юникоде UTF-8 а вот сам xml в windows-1251, как можно сделать читабельным xml без вмешательства руками?

Ничего специально делать здесь не нужно.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 12 Июля, 2013 - 12:44:31
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Мелкий
Неверно.
file_in_utf8.php (Отобразить)

>
внимание на поле UserName (Отобразить)

-или речь о том, что:
* Файл XML в cp1251
* Хедлайн сообщает о cp1251
* Загружаем в php-файле, который в UTF
? Если так, то да, действий не требуется. Но тогда речь только об определении XML вне самого скрипта (иначе он тоже будет в кодировке скрипта) - может быть, из-за этого возникло недопонимание.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 12 Июля, 2013 - 12:51:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




EuGen, ну так:
EuGen пишет:
file_in_utf8
EuGen пишет:
encoding="windows-1251"

А если XML заявлен как windows-1251 и сохранён так же, то при загрузке в simplexml все данные будут корректно конвертированы в UTF8.


-----
PostgreSQL DBA
 
 Top
EuGen Администратор
Отправлено: 12 Июля, 2013 - 12:57:46
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Мелкий пишет:
А если XML заявлен как windows-1251 и сохранён так же, то при загрузке в simplexml все данные будут корректно конвертированы в UTF8.

EuGen пишет:
-или речь о том, что:
* Файл XML в cp1251
* Хедлайн сообщает о cp1251
* Загружаем в php-файле, который в UTF
? Если так, то да, действий не требуется.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
SofiaKit
Отправлено: 12 Июля, 2013 - 13:45:43
Post Id


Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




вобщем буду откровенна:
задача:
Вытянуть некоторые данные, посчитать и занести в MySQL.
Как это должно присходить:
В определенную дирикторию складываются файлы такого типа: SesDataExport_13.05.22_09-08-35. xml
Крон 2 раза в день запускать должен php скрипт, который должен проверять наличие нового файла, и если он есть, то заносить данные в бд.

Структуру БД я примерно придумала, будет записываться имя файла, и если в БД не будет имени файла, то значит он новый... обрабатывается, записывается и все рады...

как видите задачу мне не легкую задали Хм причем все надо в UTF8 записывать, а сам xml, зараза в 1251 Огорчение ... жесть...
 
 Top
EuGen Администратор
Отправлено: 12 Июля, 2013 - 14:02:56
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




SofiaKit
Так в чём вопрос? Как разобрать xml - примеры смотрите выше, благо их в достатке. Как проверить, новый ли файл - Вы уже сами ответили на этот вопрос (помещение имени обработанного файла в таблицу БД). С кодировками тоже вопрос решён выше. Остаётся - проход по каталогу и сама запись в БД. Но это ведь тривиальные вещи, не так ли?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
SofiaKit
Отправлено: 12 Июля, 2013 - 14:16:53
Post Id


Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




верно, вроде все решено, вроде понятно... почти.. я так и не разобралась с кодировкой... впервые сталкиваюсь с такой задачей...
 
 Top
EuGen Администратор
Отправлено: 12 Июля, 2013 - 14:18:50
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




SofiaKit
Выжимка: если у Вас xml-файл в Windows-1251, в его первой строке тоже указана Windows-1251, то ничего делать не надо. Вообще ничего - спокойно используйте simplexml_load_file в своём скрипте (тот, который в UTF-8) - и всё будет в порядке, simplexml преобразует данные в UTF-8 сам.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
SofiaKit
Отправлено: 12 Июля, 2013 - 14:27:34
Post Id


Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




так мне пишет вот так:
21.05.2013 9:29:32а—аАбˆаИб…аИаНаА а’
и приходится вручную в IE устанавливать кодировку UTF8, а на автовыборе почему-то 1251 стоит.

Хотя в заголовок php я засунула
mb_internal_encoding("UTF-8");
 
 Top
EuGen Администратор
Отправлено: 12 Июля, 2013 - 14:36:33
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




SofiaKit
Так при чём здесь отображение в браузере. То, что simplexml верно обработает данные, и то, как Вы их покажете - это разные вещи. Для верного отображения следует отсылать тег meta:
CODE (html):
скопировать код в буфер обмена
  1.  <meta charset="utf-8" />

- и, разумеется, не забывать о заголовке:
PHP:
скопировать код в буфер обмена
  1. header('Content-Type: text/html; charset=utf-8');


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (4): « 1 [2] 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB