Я работаю с 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"}
Это правильный 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);
Если вы используете 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;
Причиной этого, вероятно, является то, что этих символов нет в UTF-8 (я не смог их найти, по крайней мере). Из документации PHP по json_encode:
Все строковые данные должны быть в кодировке UTF-8.
Это означает, что он должен будет преобразовать его в «описание» символов. Не беспокойтесь, если вы расшифруете его снова, это, скорее всего, будет правильным.
У меня есть решение этой проблемы. Он отлично работает для меня.
$data = array();
$data['hindi'] = base64_encode('यह कार है');
$data['english'] = 'This is car';
$encoded_text=json_encode($data);
Чтобы получить часть данных на хинди:
$hindi=base64_decode(json_decode($encoded_text)->hindi);