[РЕШЕНО] Проблемма с кодировкой, послe установки на хостинг

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

Аватар пользователя Dmitriy_ua Dmitriy_ua 3 ноября 2009 в 16:52

Здравствуйте.

Скрипт читает 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.
Что можно сделать?

Комментарии

Аватар пользователя Dmitriy_ua Dmitriy_ua 3 ноября 2009 в 21:42

База не причем, сам drupal работает нормально...
Проблема в перекодировке csv данных (Exel)в utf8. На денвере хватало функции drupal_convert_to_utf8($line[1], NULL) с параметром NULL, а на хостинге эта функция работать не хочет не с NULL не c ANSI (Если Notepad++-ом перекодировать в utf8, то данные читаются нормально, но хотелось бы избавиться от этой ручной операции перед каждым импортом товаром).

Аватар пользователя Dmitriy_ua Dmitriy_ua 4 ноября 2009 в 1:30

... [РЕШЕНО] так сказать... проблема была совсем не в бд, проблема была в не совсем корректной (наверное)работе в функции fgetcsv на сервере, которая почему то, видела кириллицу только в первом поле csv файла и то не всю, т.е. она кириллицу не возвращала вообще.
Заменил fgetcsv на вот это:

<?php
....
if (
$handle fopen($path_to_file"r")) {
   while(
$line xfgetcsv($handle0)) {
        
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!