CSV Export encoding problem

explozen

Registered
Здравейте,

Имам някакъв странен проблем...
Експортвам с PHP от базата данни в CSV. Когато има резултат на кирилица, данните излизат на шльокавица.
Някой имал ли е подобен проблем и ако да, може ли да сподели.

9639808I.png
[/img]
 
explozen каза:
Здравейте,

Имам някакъв странен проблем...
Експортвам с PHP от базата данни в CSV. Когато има резултат на кирилица, данните излизат на шльокавица.
Някой имал ли е подобен проблем и ако да, може ли да сподели.

9639808I.png
[/img]
Таблицата и полетата трябва да са ти в енкодинг utf8_general_ci.
 
Дай повече информация. Колации на база данни, как вадиш данните от базата данни (понякога се налага да използваш SET NAMES utf8, когато се свързваш с базата данни).

Също не знам как стои въпроса под Мак с регионални настройки и т.н., но например, имаш ли проблеми с кирилица на субтитри.

Друго също ми прави впечатление. Това не е utf8 шльокавица. На нещо друго прилича.
Дай повече информация с код да видим какви ги вършиш.
 
Направи си един тест, за да разбереш дали базата данни, извеждането от базата данни или нещо друго е проблема.


Вместо да използваш базата данни, направи си един тестови масив със същата структура и го попълни с кирилизирани стойности и го подай, да видиш дали изхода ще е същия. Ако имаш проблем отново, това означава, че базата данни ти е наред и трябва да търсиш проблема другаде.
 
https://www.php.net/manual/en/mysqli.set-charset.php
PHP:
$mysqli->set_charset("utf8")
https://stackoverflow.com/questions/10331883/utf-8-php-and-mysqli-utf8
 
Защо не използваш file_put_contents ?

PHP:
$data = file_get_contents($npath);
$data = mb_convert_encoding($data, 'UTF-8', 'OLD-ENCODING');
file_put_contents('tempfolder/'.$a, $data);
https://stackoverflow.com/questions/4839402/how-to-write-file-in-utf-8-format/15146274
Или по-кофти вариант:

PHP:
function writeUTF8File($filename,$content) { 
        $f=fopen($filename,"w"); 
        # Now UTF-8 - Add byte order mark 
        fwrite($f, pack("CCC",0xef,0xbb,0xbf)); 
        fwrite($f,$content); 
        fclose($f); 
}

https://stackoverflow.com/questions/4839402/how-to-write-file-in-utf-8-format/15146274

Проблема е, че при създаване на файл ти трябва да му укажеш в какъв енкодинг да запазва. Ако стринга ти е UTF8 а ти му кажеш, че файла ще е ANSI ще ти прецака символите с маймуница.

https://stackoverflow.com/questions/11115533/php-file-put-contents-and-utf-8
 
Revelation каза:
На мен по- ми се вярва да е операционната система и липсващи настройки някъде.
И на мен нещо подобно ми се върти, като мнение.
 

Горе