Как распарсить .txt файл с кириллицей?

Так получилсось, что логи какое-то время сохранились в .txt файл, но кирилица там в таком формате:

{"city":"\u041c\u043e\u0441\u043a\u0432\u0430","agency":"TestAgency"...

Какой параметр писать, чтобы при чтении файла у меня вывелась нормально кириллица?


Ответы (1 шт):

Автор решения: newman

У вас данные вывелись в формате JSON. Достаточно прочитать эту строку, декодировать ее в объект или массив JSON и можно будет прочитать кириллические строки.

Можно это сделать так как подсказали в комментарии

<?php

$str = '{"city":"\u041c\u043e\u0441\u043a\u0432\u0430"}';

$data = json_decode($str);

print_r($data);

Это код выведет

stdClass Object
(
    [city] => Москва
)

Но этот вариант сработает, если вы можете считать файл в PHP скрипте и внутри файла всегда будет валидный JSON.

Еще как вариант можно конвертировать все эти символы с помощью регулярного выражения

$str = '{"city":"\u041c\u043e\u0441\u043a\u0432\u0430"}';
$str = preg_replace_callback(
    "/\\\\u([0-9-a-f]{4})/", 
    function($matches) {return mb_chr(intval($matches[1], 16));}, 
    $str
);
echo($str);

Т.е. находим вхождение \u и четырех символов шестнадцетиричного кода. Код приводим к целому числу по базису 16 и по этому коду получаем символ.

→ Ссылка