[РЕШЕНО]Странности с кодировкой при работе с Drupal

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

Аватар пользователя vinny_pooh vinny_pooh 17 января 2013 в 15:38

Возникла проблема с кодировками в Drupal. Я сейчас занимаюсь написанием скрипта для автоматического наполнения сайта на d7+commerce. Я Вытаскиваю товары из файла .csv и пытаюсь создать товары в commerce (этот вопрос уже решен). Но возникла непонятная мне проблема с кодировакой.
При обычном выборе из файла необходимых данных:

<?php
$f 
fopen("http://kupets.zp.ua/sites/all/modules/addgoods/Kprice3.csv""r");
for (
$i=0$data=fgetcsv($f,0,"\t"); $i++) {
    
$num count($data);
    if(
$i != 0){
        
// echo "<h3>String number - $i (fields: $num):</h3>";            
        
$data[1] = charset_x_win($data[1]);
        echo 
"SKU: ".$data[0]."<br>";
        echo 
"Name: ".charset_x_win($data[1])."<br>";
        echo 
"Price: ".$data[2]."<br><hr>";        
    }
}
fclose($f);
?>

я получаю корректные данные:

Creation entities...
SKU: 10519301
Name: Шайба 5*10*1
Price: 0.20

SKU: 10788811
Name: Гайка М5 низкая
Price: 0.20

SKU: 10794011
Name: Гайка М4 низкая
Price: 0.50

SKU: 12642701
Name: Шайба 8*12 медная
Price: 0.80

но при попытке записи этих данных в commerce:

<?php
$f 
fopen("http://kupets.zp.ua/sites/all/modules/addgoods/Kprice3.csv""r");
for (
$i=0$data=fgetcsv($f,0,"\t"); $i++) {
    
$num count($data);
    if(
$i != 0){
        
// echo "<h3>String number - $i (fields: $num):</h3>";            
        
$data[1] = charset_x_win($data[1]);
        echo 
"SKU: ".$data[0]."<br>";
        echo 
"Name: ".charset_x_win($data[1])."<br>";
        echo 
"Price: ".$data[2]."<br><hr>";
                
add_product($data[0], $data[1], $data[2]);        
    }
}
fclose($f);

function 

add_product($sku$title$price){
    
$sku addslashes(trim($sku));
    
$title addslashes(trim($title));
    
$price = (double)trim($price);
    echo 
"SKU: ".$sku."<br>";
    echo 
"Name: ".$title."<br>";
    echo 
"Price: ".$price."<br>";

    

$product commerce_product_load_by_sku($sku);
    
$product->type 'product';
    
$product->sku $sku;
    
$product->title $title;
    
// Устанавливаем цену с учетом скидки        
    
$product->commerce_price['und'][0]['amount'] = (int)($price 100); // Цена товара
    
$product->commerce_price['und'][0]['currency_code'] = 'UAH';
    
$product->status 1;
    
$product->commerce_stock['und'][0]['value'] = (int)trim('456789');
    
$result commerce_product_save($product);
    return 
$result;
}
?>

Результат выходит следующий:

Creation entities...
SKU: 10519301
Name: ����� 5*10*1
Price: 0.20

SKU: 10519301
Name: ����� 5*10*1
Price: 0.2

Кто может подсказать решение этой проблемы?

Комментарии

Аватар пользователя vinny_pooh vinny_pooh 17 января 2013 в 16:01

я пробовал делать использовать функцию utf8_encode, чтоб привести строку к utf, но лучше это выглядеть не стало:

<?php
Creation entities
...
SKU10519301
Name
Øàéáà 5*10*1
Price
0.20
?>

Товары то добавляются, но совсем не читабельными(

Аватар пользователя vinny_pooh vinny_pooh 17 января 2013 в 16:29

"graker" wrote:
iconv надо использовать.

Да, Вы правы. Вот эти две строки исправили ситуацию:

<?php
    $sku 
iconv('Windows-1251''utf-8'addslashes(trim($sku)));
    
$title iconv('Windows-1251''utf-8'addslashes(trim($title)));
?>