2013-10-20 4 views
1

Я пытаюсь импортировать CSV или текст Unicode с тайскими символами в MySQL. У MySQL нет проблем с сохранением тайских символов. Проблема в том, что когда я использую fgetcsv или fgets, я получаю мусор в обмен на тайские символы. Например, эти символы, ตู้ เซฟ เหล็ก, становятся 9I @@ +% G.Импорт CSV с азиатскими символами в PHP

Есть ли другой способ, который я могу читать из файлов CSV? Возможно, функция может их правильно прочитать?

+0

* Как * точно вы читаете эти файлы и * в какой кодировке они входят? – deceze

+0

Привет. Я использую PHP, с fopen ($ _ FILES), а затем цикл с fgets или fgetcsv. А затем вставьте их в MYSQL, используя mysql_query. Я не уверен, что такое кодировка CSV-файлов, но они экспортируются из Excel с использованием файла CSV, разделенного запятыми, или текста Unicode. –

ответ

1

Функции fgets и fgetcsv использует настройку локали системы, чтобы сделать предположения о кодировке символов. По-моему, изменение настроек языкового стандарта для этой цели - непонятное решение. Есть и другой способ. Вы можете использовать только UTF-8 и в явной форме преобразования Юникода в UTF-8:

Пример кода (PHP> = 5.3):

<?php 
//set internal encoding to utf8 
mb_internal_encoding('utf8'); 

$fileContent = file_get_contents('thai_unicode.csv'); 

//convert content from unicode to utf 
$fileContentUtf = mb_convert_encoding($fileContent, 'utf8', 'unicode'); 

echo "parse utf8 string:\n"; 
var_dump(str_getcsv($fileContentUtf, ';')); 

и результат:

php load.php 
parse utf8 string: 
array(2) { 
    [0]=> 
    string(36) "ตู้เซฟเหล็ก" 
    [1]=> 
    string(1) "1" 
} 
+0

Спасибо. Я попробую это и дам вам обратную связь. Ура !!! –

+0

Yup. Это работало. Спасибо вам столько зоолека !!! –

Смежные вопросы