ajax json_encode возвращает ноль для тайских, арабских и китайских символов

Я работаю с многоязычным (азиатские языки) веб-сайтом и сталкиваюсь со странной проблемой. У меня есть функция, которая возвращает строку, завернутую в json_encode.

я использую CodeIgniter и я поставил

$ db [‘default’] [‘char_set’] = ‘utf8’;

$ db [‘default’] [‘dbcollat’] = ‘utf8_general_ci’;

Если я непосредственно распечатывать вывод, а затем отображать китайская, арабская, тайская строка правильно, что означает, что я правильно закодировал свою веб-страницу и php для печати многоязычной строки, но если я получаю эту строку через ajax и использую json_encode, она печатает ‘??????’

Пока я пытался

  1. Добавление «JSON_UNESCAPED_UNICODE» в функцию json_encode. (сервер выдает ошибку для этого, php5 не поддерживает это, я думаю)
  2. Добавление заголовка UTF непосредственно перед функцией json_encode
  3. Также попытался установить заголовок UTF в запросе ajax
  4. Даже пробовал добавлять

mb_convert_encoding ($ reviewsui, ‘ISO-8859-1’, ‘UTF-8’);

но пока ничего не получалось. Я что-то пропустил?

редактировать
Я даже пытался передать эту строку через utf8_encode () это не решило мою проблему даже. Единственное отличие, которое я увидел, это вместо «????» я вижу «à¤¸à¤®à¤¾à¤ पठ°».

0

Решение

json_encode ожидает, что строки в данных будут закодированы как UTF-8.

Преобразовать их в UTF-8 если они еще не сделали. Посмотрите на пример ниже

  $results = array_map(function($r) {
$r['text'] = utf8_encode($r['text']);
return $r;
}, $results);
echo json_encode($results);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]