Кодировки (artlebedev, iconv, coding)

Чаще всего помогает

  • https://www.artlebedev.ru/decoder/
  • iconv
  • ruby or python
  • json encode/decode

Ruby

Пример изменения кодировки windows default для кириллицы на UTF-8 с использованием ruby

str.force_encoding("Windows-1251").encode("UTF-8")

“str”.encode(“windows-1251”) # кодируем в 1251

“str”.encode(“windows-1251”, invalid: :replace, undef: :replace, replace: ‘?’) # кодируем в 1251, символы которые не можем раскодировать замещаем на указанные

json

Кодировка после json_encode без unescape. Лечится использованием json_decode (лучше) или скриптом-сопоставлением (хуже).

\u0430\u043f\u044b\u0443\u043a\u0435\u043f

<?php 
 function Escape_win ($path) { 
 $path = strtoupper ($path); 
 return strtr($path, array("\U0430"=>"а", "\U0431"=>"б", "\U0432"=>"в", 
 "\U0433"=>"г", "\U0434"=>"д", "\U0435"=>"е", "\U0451"=>"ё", "\U0436"=>"ж", "\U0437"=>"з", "\U0438"=>"и", 
 "\U0439"=>"й", "\U043A"=>"к", "\U043B"=>"л", "\U043C"=>"м", "\U043D"=>"н", "\U043E"=>"о", "\U043F"=>"п", 
 "\U0440"=>"р", "\U0441"=>"с", "\U0442"=>"т", "\U0443"=>"у", "\U0444"=>"ф", "\U0445"=>"х", "\U0446"=>"ц", 
 "\U0447"=>"ч", "\U0448"=>"ш", "\U0449"=>"щ", "\U044A"=>"ъ", "\U044B"=>"ы", "\U044C"=>"ь", "\U044D"=>"э", 
 "\U044E"=>"ю", "\U044F"=>"я", "\U0410"=>"А", "\U0411"=>"Б", "\U0412"=>"В", "\U0413"=>"Г", "\U0414"=>"Д", 
 "\U0415"=>"Е", "\U0401"=>"Ё", "\U0416"=>"Ж", "\U0417"=>"З", "\U0418"=>"И", "\U0419"=>"Й", "\U041A"=>"К", 
 "\U041B"=>"Л", "\U041C"=>"М", "\U041D"=>"Н", "\U041E"=>"О", "\U041F"=>"П", "\U0420"=>"Р", "\U0421"=>"С", 
 "\U0422"=>"Т", "\U0423"=>"У", "\U0424"=>"Ф", "\U0425"=>"Х", "\U0426"=>"Ц", "\U0427"=>"Ч", "\U0428"=>"Ш", 
 "\U0429"=>"Щ", "\U042A"=>"Ъ", "\U042B"=>"Ы", "\U042C"=>"Ь", "\U042D"=>"Э", "\U042E"=>"Ю", "\U042F"=>"Я")); 
 } 
 
$str = "\u0430\u043f\u044b\u0443\u043a\u0435\u043f "; 
print Escape_win ($str); 
?>

$json = '{"out":"'.$str.'" }'; 
$a=json_decode($json); 
echo $a->out;

 

 

Leave a Reply