fputcsv() и русский текст, проблема с кодировкой

среда, 26 октября 2016 г.

Есть прекрасная функция fputcsv(), которая помогает быстро и безболезненно записывать данные в csv файл.

Но если вы попробуете записать русский текст, то вы в итоговом файле увидите, что есть проблема с кодировкой. Выглядит это примерно так:



И даже несмотря на то, что данные у вас в UTF-8!

А вот как выглядит код, который делает то, что показано на картинке:

$fp = fopen('testcsv.csv', 'w');
fputcsv($fp, array('Item', 'Столбец 1', 'Данные'), ';');
fclose($fp);

Так вот чтобы проблемы с кодировкой не было, надо всего лишь добавить 3 байта в файл. Это BOM (Byte Order Mark). Код получится следующим:

$fp = fopen('testcsv.csv', 'w');
fputs($fp, chr(0xEF) . chr(0xBB) . chr(0xBF)); // BOM
fputcsv($fp, array('Item', 'Столбец 1', 'Данные'), ';');
fclose($fp);

Теперь данные будут выглядеть корректно:

7 коммент.:

Анонимный комментирует...

👍👍👍

Анонимный комментирует...

Спасибо большое!!!
Очень выручил!!!

Анонимный комментирует...

Это. Просто. ОЧешуенно!!!! Спасибо тебе!!!

Анонимный комментирует...

Спасибо, чувак!

Unknown комментирует...

Благодарю!

Анонимный комментирует...

Большое спасибо!

Анонимный комментирует...

Очень помогло! Спасибо большое!

Copyright © 2010 WEB IT blog