У меня такой код в файле с кодировкой UTF-8:
<?php setlocale(LC_ALL, 'cs_CZ.utf8'); //Can be commented out without effect. $input = "Štěpán,Šafránek"; $result = str_getcsv($input); echo $result[0]; //output = "těpán"; echo $result[1]; //output = "afránek"; ?>
Обратите внимание на обрезанные строки, которые воспроизводят эхо-сигналы.
Также это работает:
<?php setlocale(LC_ALL, 'cs_CZ.utf8'); //Can be commented out without effect. $input = "aaaŠtěpán,aaaŠafránek"; $result = str_getcsv($input); echo $result[0]; //output = "aaaŠtěpán"; echo $result[1]; //output = "aaaŠafránek"; ?>
Поскольку входная строка является частью скрипта, не должно быть никаких проблем с кодировкой, не так ли? Язык установлен правильно, не так ли?
Так что же не так? Мое решение состоит в том, что str_getcsv () просто сломан. Любой альтернативный способ разбора CSV?
Интересно, что в Windows это прекрасно работает, но в Linux я вижу это поведение.
Связанный с этим вопрос, но упомянутые там резолюции не помогли: PHP str_getcsv удаляет umlauts