У меня есть строка JSON со многими кодами UNICODE, я ищу способ конвертировать их в UTF8 с помощью PHP. Строка JSON имеет значения вроде:
{
"capital":"Bras\u00edlia",
"symbol":"\u20a1"
}
, а затем другие значения, например:
{
"native": "اليَمَن",
"symbol_native": "ر.ي."
}
Строка JSON содержится внутри переменной PHP, которая выглядит следующим образом :
$countries ='{
"AR":{
"name":"Argentina",
"native":"Argentina",
"phone":"54",
"continent":"SA",
"capital":"Buenos Aires",
"currency":{
"symbol":"AR$",
"name":"Argentine Peso",
"symbol_native":"$",
"decimal_digits":2,
"rounding":0,
"code":"ARS",
"name_plural":"Argentine pesos",
"vat":"21",
"vat_name":"IVA"
},
"tin":"CUIT",
"languages":"es,gn",
"iso":"ARG"
}';
Уже опробовал большинство решений в Интернете и SO, но ни одно из них не сработало, безуспешно пытался:
utf8_encode()
mb_convert_encoding()
iconv()
header('charset=utf-8');
Единственный найденный мной способ успешно преобразовать коды UNICODE в UTF8 использовал str_replace()
, создавая массив кодов UNICODE и другой массив с их эквивалентными значениями UTF8, но массив, который я имею, не покрывает все возможные комбинации, поэтому мне было интересно, есть ли более простой способ сделать это.
Этот работает с символами в массиве:
function unicodeToutf8($str){
$repl = ['\u00e1','\u00e9','\u00ed','\u00f3','\u00fa','\u00f1','\u00c1','\u00c9','\u00cd','\u00d3','\u00da','\u00d1'];
$with = ['á','é','í','ó','ú','ñ','Á','É','Í','Ó','Ú','Ñ'];
return str_replace($repl,$with,$str);
}
Спасибо!