Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Запуск php скрипта через планировщик заданий Windows. Проблемы с кодировкой.

Ответить
Настройки темы
Запуск php скрипта через планировщик заданий Windows. Проблемы с кодировкой.

Пользователь


Сообщения: 124
Благодарности: 2

Профиль | Отправить PM | Цитировать


Всем привет!

Мне нужно парсить xml файл, полученный с сайта каждый час и данные записывать в БД.

Написала скипт на php, на сервере он работает, проблем нет.
Назначила его в задание через планировщик Windows.
Скрипт выполняется, но в БД данные записываются в неверной кодировке, вместо русских букв - абракодабра.

В xml данные в UTF-8, в БД данные в cp1251.
Перед записью данных делаю конвертацию :
PHP код: Выделить весь код

$lastname=iconv('UTF-8''cp1251'trim($xml->{'family-name'})); 


что не так?

Отправлено: 22:53, 17-09-2011

 

Deadooshka


Сообщения: 2482
Благодарности: 671

Профиль | Отправить PM | Цитировать


А в Windows есть cp1251? Попробуйте 'Windows-1251'.

Отправлено: 08:18, 18-09-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Пользователь


Сообщения: 124
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменила. Не помогает(

Отправлено: 07:58, 19-09-2011 | #3


Пользователь


Сообщения: 124
Благодарности: 2

Профиль | Отправить PM | Цитировать


Сам файл php у меня в кодировке UTF-8 без BOM.
правильно?

Отправлено: 08:14, 19-09-2011 | #4


Deadooshka


Сообщения: 2482
Благодарности: 671

Профиль | Отправить PM | Цитировать


попробуйте
PHP код: Выделить весь код

$lastname mb_convert_encoding(trim($xml->{'family-name'}), 'windows-1251''auto'); 


Определите кодировку $xml->{'family-name'} в mb_detect_encoding или визуально.
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:38, 19-09-2011 | #5


Пользователь


Сообщения: 124
Благодарности: 2

Профиль | Отправить PM | Цитировать


Получилось!!!! )))))

Только почему то ругается, что не определена кодировка, но работает.

PHP код: Выделить весь код

$lastname iconv('UTF-8''cp866'trim($xml->{'family-name'}));
$lastname mb_convert_encoding($lastname'windows-1251''auto');
echo 
"k=".mb_detect_encoding($lastname); 

результат :
PHP Warning: mb_convert_encoding(): Unable to detect character encoding
k=



А если пишу, как Вы показали, то не ругается, но кодировка не меняется.
PHP код: Выделить весь код

$lastname mb_convert_encoding(trim($xml->{'family-name'}), 'windows-1251''auto'); 
echo 
"k=".mb_detect_encoding($lastname); 

результат :
k=UTF-8

Отправлено: 10:11, 19-09-2011 | #6


Deadooshka


Сообщения: 2482
Благодарности: 671

Профиль | Отправить PM | Цитировать


изначально то в $xml->{'family-name'} какая кодировка?

PHP код: Выделить весь код

echo mb_detect_encoding($xml->{'family-name'});
echo 
$xml->{'family-name'}; // смотрите пример текста 

cp866 - это вроде DOS-кодировка...

Отправлено: 10:25, 19-09-2011 | #7


Пользователь


Сообщения: 124
Благодарности: 2

Профиль | Отправить PM | Цитировать


Оказывается дело не в том.
Если закоментировать строчки с преобразованием данных, то достаточно одного iconv.
Теперь вопрос у меня появился? А как мне данные преобразовать?

PHP код: Выделить весь код

$lastname iconv('UTF-8''cp866'trim($anketa->{'family-name'}));

//$lastname=substr($lastname,0,40);
//$lastname=ucfirst(strtolower(trim($lastname)));
//$lastname=str_replace(".","",$lastname); 

Как так, почему я всегда в БД записывала данные в cp1251, а теперь работает и в cp866?

Цитата:
изначально то в $xml->{'family-name'} какая кодировка?
изначально UTF-8

Последний раз редактировалось zvezda_t, 19-09-2011 в 10:37.


Отправлено: 10:30, 19-09-2011 | #8


Deadooshka


Сообщения: 2482
Благодарности: 671

Профиль | Отправить PM | Цитировать


строковые функции PHP работают исходя из текущей локали
http://docs.php.net/manual/ru/function.setlocale.php
PHP код: Выделить весь код

setlocale(LC_CTYPE,'ru_RU.CP1251'); 


либо используйте аналогичные mb_ функции с указанием кодировки текста http://docs.php.net/manual/ru/functi...strtolower.php
и http://docs.php.net/manual/ru/functi...nvert-case.php с MB_CASE_TITLE (вместо ucfirst)
внизу там примеры есть.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:41, 19-09-2011 | #9


Пользователь


Сообщения: 124
Благодарности: 2

Профиль | Отправить PM | Цитировать


А почему я всегда в БД записывала данные в cp1251, а теперь работает и в cp866?

Отправлено: 10:44, 19-09-2011 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Запуск php скрипта через планировщик заданий Windows. Проблемы с кодировкой.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Планировщик заданий (куча заданий по умолчанию) - а надо ли? Pepsi_nsk Microsoft Windows 7 10 24-07-2014 19:12
Планировщик заданий в Windows 2003 SanyaJoker Microsoft Windows NT/2000/2003 8 24-11-2011 14:26
планировщик заданий в Windows NT alex-snip Microsoft Windows NT/2000/2003 3 07-11-2009 18:08
Службы - Планировщик заданий в Windows Vista Simlion Microsoft Windows Vista 1 26-08-2007 22:34
Запуск PHP-скрипта из командной строки Windows vadimiron Вебмастеру 4 01-12-2005 15:12




 
Переход