Здравствуйте.
Скрипт читает csv файл, и заносит данные в таблицу:
db_query("INSERT INTO {eprice} (cat, name, god, num, cost, note, img ) VALUES ('%s','%s','%s', %d, %f, '%s', '%s')", drupal_convert_to_utf8($line[1], NULL), drupal_convert_to_utf8($line[0], NULL), $line[2], $line[3], $line[4], drupal_convert_to_utf8($line[5], NULL), $line[6] );
На денвере это все нормально заносится, а вот на хостинге, все символы кириллицы исчезают...
Все таблицы бд в utf8.
Что можно сделать?
Комментарии
Криво перенести базу. Перенесите прямо.
База не причем, сам drupal работает нормально...
Проблема в перекодировке csv данных (Exel)в utf8. На денвере хватало функции drupal_convert_to_utf8($line[1], NULL) с параметром NULL, а на хостинге эта функция работать не хочет не с NULL не c ANSI (Если Notepad++-ом перекодировать в utf8, то данные читаются нормально, но хотелось бы избавиться от этой ручной операции перед каждым импортом товаром).
... [РЕШЕНО] так сказать... проблема была совсем не в бд, проблема была в не совсем корректной (наверное)работе в функции fgetcsv на сервере, которая почему то, видела кириллицу только в первом поле csv файла и то не всю, т.е. она кириллицу не возвращала вообще.
Заменил fgetcsv на вот это:
<?php
....
if ($handle = fopen($path_to_file, "r")) {
while($line = xfgetcsv($handle, 0, 0 )) {
db_query("INSERT INTO {eprice} (cat, name, god, num, cost, note, img ) VALUES ('%s','%s','%s', %d, %f, '%s', '%s')",$line[1], $line[0], $line[2], $line[3], $line[4], $line[5], $line[6]);
....
function xfgetcsv($f='', $x='', $s=';'){
if($str=fgets($f)){
$data=explode(';', mb_convert_encoding(trim($str),'utf-8', 'CP1251'));
return $data;
}else{
return FALSE;
}
?>
и все ok!