проблема с кирилицей при импорте пользователей

Главные вкладки

Аватар пользователя vergas vergas 5 августа 2009 в 9:14

Помогите решить проблему.
При импорте CSV или txt файла UTF8, содержащего русские названия не отображаются соответствующие названия полей и не импортируются имена пользователей и текстовые данные профайла.
Как я понимаю ключ крешению проблемы в редактировании user_import.module

прбовал делать по рекомендации
#13
Andreas Goebel
http://drupal.org/node/190437

установл в строке 1033: foreach ($data_row as utf8_encode($data_cell)) {

при попытке импорта
поля появились в виде абракадабры.

буду признателен за помощь.
тестовый файл и user_import.module
прилагаю.

ВложениеРазмер
Двоичные данные user_import.module56.43 КБ
Иконка простого текстового файла user_import.module.txt56.43 КБ

Комментарии

Аватар пользователя glu2006 glu2006 5 августа 2009 в 9:30

весь трабл в этой строчке

<?php
$data_row 
= [user=fgetcsv]fgetcsv[/user] ($handle1000000",");
?>

попробуйте заменить ее на:

<?php
$line 
fgets($handle1000000);
$line iconv("WINDOWS-1251""UTF-8"trim($line));
// это необходимо только если вы импортируете из файла в кодировке cp-1251
$data_row explode(';'$line); или $data_row explode(','$line); 
// В зависимости от разделитеся в файле импорта.
?>
Аватар пользователя vergas vergas 5 августа 2009 в 16:34

пока не получилось
как удостовериться что файл который я делаю в TXT или CSV формате действительно в кодировке UTF8
я уже начинаю сомневаться Sad
у меня есть еще идея проверить это через юникс
поместив файл на хост, и там проверить и при необходимости сконвертировать его юникс конвертором
или коммандой iconv :???

Аватар пользователя glu2006 glu2006 5 августа 2009 в 16:38

vergas wrote:
пока не получилось
как удостовериться что файл который я делаю в TXT или CSV формате действительно в кодировке UTF8
я уже начинаю сомневаться Sad
у меня есть еще идея проверить это через юникс
поместив файл на хост, и там проверить и при необходимости сконвертировать его юникс конвертором
или коммандой iconv :???

А тупо открыть в блокноте или notepad++ и посмотреть кодировку слабо? Smile
Или просто продебажить что возвращает функция "fgetcsv ($handle, 1000000, ",");" и функция "fgets($handle, 1000000);"

Аватар пользователя vergas vergas 5 августа 2009 в 20:15

как можно "добить" проблему - результат пока только такой - в интерфейсе импорта отображается русское название поля но данные таблички в сответствующие поля не импортируются. Импортируется только английский текст.

Аватар пользователя glu2006 glu2006 5 августа 2009 в 20:22

vergas wrote:
как можно "добить" проблему - результат пока только такой - в интерфейсе импорта отображается русское название поля но данные таблички в сответствующие поля не импортируются. Импортируется только английский текст.

Повторю вопрос, что возвращают функции? из чего состоит в первом случае массив, а во втором случае строка?

Аватар пользователя vergas vergas 5 августа 2009 в 21:41

glu2006 wrote:

Повторю вопрос, что возвращают функции? из чего состоит в первом случае массив, а во втором случае строка?

для того чтобы понять как работает весь механизм мне не хватает мозгов.

пока я понял только то что если я создаю файл в кодировке UTF8 то ваш вариант не работает. если я блокнотом сохраняю файл в ansi то ок
http://drupal.org/node/137662
тоесть то что стало читаться сейчас это CSV column

То что не работает - данные в полях профиля после импорта остаются пустые. переносится только информация и названияя на английском
например если я в таблице в колонке с названием "город" укажу Москва то город в профиле пользователя не заполнится, если напишу Moscow все будет ок
ps друпал не выдает ошибку при импорте .
судя по тому что сейчас происходит - конвертируется только первая сточка csv с названиями колонок а сами данные не обрабатываются.

http://drupal.org/node/190437

нужно еще раз попробовать поредактировать 1033 и 1092
...