@Angelxalfa

Определение кодировки файла?

Здравствуйте! Столкнулся со странной ситуацией. При попытке определения кодировки файла, не зависимо от того какая она у файла в дейтсвительности, php определяеи ее как UTF-8
$file = file_get_contents('in.csv');
$encode  = mb_detect_encoding($file);
echo $encode;


При этом файл в кодировке win-1251 (проверял в notepad++) все равно определяется как UTF-8.

Почему такое происходит?

Просто я потом этот файл парсю и забиваю в базу Msql, и мне нужно привести его содержимое к определенной кодировке. Для этого:
fwrite($handle, iconv($encode, 'UTF-8', file_get_contents('in.csv')));


Но при этом если файл в UTF-8 - то все ок, а если в win-1251 - парсинг не проходит. Приходится менять на:
fwrite($handle, iconv('CP1251', 'UTF-8', file_get_contents('in.csv')));


Тогда для win-1251 проходит без проблем, для UTF-8 в базу сохраняются кракозябры вместо кирилицы...
  • Вопрос задан
  • 1085 просмотров
Решения вопроса 1
w999d
@w999d
Web-developer
ну, дело в том, что mb_detect_encoding не определяет язык или charset и может лишь определить явные ошибки - например, неверные последовательности для utf-8.
алсо из комментариев
If you try to use mb_detect_encoding to detect whether a string is valid UTF-8, 
use the strict mode, it is pretty worthless otherwise.

mb_detect_encoding($s, 'UTF-8', true)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
if (preg_match('//u', $string)) { /* у вас UTF-8 */ }

иногда такое работает, от настроек может зависеть
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 09:29
2500 руб./за проект
25 апр. 2024, в 09:27
4000 руб./за проект
25 апр. 2024, в 09:20
10000 руб./за проект