PankovAlxndr
@PankovAlxndr
Fullstack web developer

Как узнать и исправить кодировку php?

здравствуйте, у меня есть файл, я его скачивая через curl_exec
когда я его открываю в sublime, то вижу такое

01 Ïëèòêà;õ9999069423;;Genesis òåìíî-ñåðûé K-108/SR (2q108/SR) 600x600x10 ìàòîâûé;1310;1310;Kerranova;Ðîññèÿ;ì2;;;1;52;Êåðàìîãðàíèò;000002886;;;Äëÿ ïîëà, Îáùåñòâåííûå ïîìåùåíèÿ, Ñòðîèòåëüíàÿ ïëèòêà;Áàçîâàÿ ïëèòà;øòóêà;60;60;0.95;;;4, 4;1.44, 1.44;31.8, 31.795;60.5õ5õ60.5, 60.5õ5õ60.5;7.11;Ìðàìîð è ãðàíèò;Ñåðûé;Íåãëàçóðîâàííàÿ;Ìàòîâàÿ;Äà;Íåò;;;;;;;Êåðàìèêà;Ïîë;;;;;;;;;;;;;;

это строка из файла (выгрузка в csv), когда же я читаю этот файл, то в отладке вижу ромбики вместо русских букв
Как мне исправить содержимое файла, чтобы оно было на русском языке?

Интересное:
в сублайме выше строка, но я делаю Reopen With Encoding Windows-2151 и я вижу отличный файл

01 Плитка;х9999069423;;Genesis темно-серый K-108/SR (2q108/SR) 600x600x10 матовый;1310;1310;Kerranova;Россия;м2;;;1;52;Керамогранит;000002886;;;Для пола, Общественные помещения, Строительная плитка;Базовая плита;штука;60;60;0.95;;;4, 4;1.44, 1.44;31.8, 31.795;60.5х5х60.5, 60.5х5х60.5;7.11;Мрамор и гранит;Серый;Неглазурованная;Матовая;Да;Нет;;;;;;;Керамика;Пол;;;;;;;;;;;;;;

Но самое интересно, если я нажимаю Save With Enсoding 1251, то сублайм не дает мне этого сделать, говорит, чт не все символы возможно переделать

помогите плиз: как понять текущую кодировку и что сделать на php, чтобы содержимое файл читалось корректно (без роибиков и знаков вопросов)?
  • Вопрос задан
  • 203 просмотра
Решения вопроса 1
Moskus
@Moskus
Вообще ничего "интересного": ваш файл - CSV в кодировке Windows-1251, который в первом примере показывается в кодировке Windows-1252 или ISO-8859-1 (что уж у вас там для Sublime по умолчанию установлено для однобайтных кодировок), то есть неверно интерпретируется. Однобайтная, а не мультибайтовый Unicode - потому что количество символов совпадает и нет повторяющихся через раз одинаковых символов (старший байт).
"Исправлять" ничего не нужно. Можно сконвертировать, как однобайтовую 1251 в UTF-8 - тогда неоднозначность в интерпретации кодировки исчезнет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы