PHP: как json кодировать хинди в ответ

Я работаю с API перевода, но здесь есть проблема. Я использую JSON в ответ, и когда я делаю json_encode на хинди, то получается, что «\ u092f \ u0939 \ u0915 \ u093e \ u0930 \ u0939 \ u0948»

Мой код указан ниже

$data = array();
$data['hindi'] = 'यह कार है';
$data['english'] = 'This is car';
echo json_encode($data); die;

и ответ

{"hindi":"\u092f\u0939 \u0915\u093e\u0930 \u0939\u0948","english":"This is car"}

3

Решение

Это правильный json, и когда вы отобразите его в браузере и / или проанализируете, это приведет к объекту с правильными ключами и значениями:

var json_string = '{"hindi":"\u092f\u0939 \u0915\u093e\u0930 \u0939\u0948","english":"This is car"}',
json = JSON.parse(json_string);

// or directly:
var json2 = {"hindi":"\u092f\u0939 \u0915\u093e\u0930 \u0939\u0948","english":"This is car"};

console.log(json_string);
console.log(json);
console.log(json2);

document.write(json_string);
document.write('<br>');
document.write(json.hindi);
document.write('<br>');
document.write(json2.hindi);
5

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

Если вы используете PHP 5.4 или выше, передайте JSON_UNESCAPED_UNICODEпараметр при звонке json_encode

Пример:

$data = array();
$data['hindi'] = 'यह कार है';
$data['english'] = 'This is car';
echo json_encode($data, JSON_UNESCAPED_UNICODE);
die;
4

Причиной этого, вероятно, является то, что этих символов нет в UTF-8 (я не смог их найти, по крайней мере). Из документации PHP по json_encode:

Все строковые данные должны быть в кодировке UTF-8.

Это означает, что он должен будет преобразовать его в «описание» символов. Не беспокойтесь, если вы расшифруете его снова, это, скорее всего, будет правильным.

0

У меня есть решение этой проблемы. Он отлично работает для меня.

$data = array();
$data['hindi'] = base64_encode('यह कार है');
$data['english'] = 'This is car';
$encoded_text=json_encode($data);

Чтобы получить часть данных на хинди:

$hindi=base64_decode(json_decode($encoded_text)->hindi);
0
По вопросам рекламы [email protected]