Я работаю с многоязычным (азиатские языки) веб-сайтом и сталкиваюсь со странной проблемой. У меня есть функция, которая возвращает строку, завернутую в json_encode.
я использую CodeIgniter и я поставил
$ db [‘default’] [‘char_set’] = ‘utf8’;
$ db [‘default’] [‘dbcollat’] = ‘utf8_general_ci’;
Если я непосредственно распечатывать вывод, а затем отображать китайская, арабская, тайская строка правильно, что означает, что я правильно закодировал свою веб-страницу и php для печати многоязычной строки, но если я получаю эту строку через ajax и использую json_encode, она печатает ‘??????’
Пока я пытался
mb_convert_encoding ($ reviewsui, ‘ISO-8859-1’, ‘UTF-8’);
но пока ничего не получалось. Я что-то пропустил?
редактировать
Я даже пытался передать эту строку через utf8_encode () это не решило мою проблему даже. Единственное отличие, которое я увидел, это вместо «????» я вижу «à¤¸à¤®à¤¾à¤ पठ°».
json_encode
ожидает, что строки в данных будут закодированы как UTF-8.
Преобразовать их в UTF-8
если они еще не сделали. Посмотрите на пример ниже
$results = array_map(function($r) {
$r['text'] = utf8_encode($r['text']);
return $r;
}, $results);
echo json_encode($results);
Других решений пока нет …