#php #encode
Вопрос:
Я хочу json_decode строку, которая хранится в моей базе данных. Исходная строка является:
"[{"drug_id":"2","shop_id":"1","drug_code":"HN0090840","drug_name":"\u5934\u5b62\u80f6\u56ca","manufacturer":"\u4e0a\u6d77","drug_category_id":"3","secondary_category_id":"5","drug_type":"1","drug_spec":"10M","drug_unit_id":"6","buy_price":"10.90","retail_price":"30.03","drug_image":"http:\/\/doctor-service.oss-cn-beijing.aliyuncs.com\/img_161423936637.png","banner_image":"[\"http:\/\/doctor-service.oss-cn-beijing.aliyuncs.com\/img_161423936637.png\",\"http:\/\/doctor-service.oss-cn-beijing.aliyuncs.com\/img_161423937074.png\"]","drug_intro":"","drug_details":"\u4e00\u9897\u63d0\u795e\u9192\u8111","status":"1","is_deleted":"0","drug_category_name":"\u63d0\u795e\u9192\u8111","secondary_category_name":"\u6297\u751f\u7d20B","drug_unit_name":"","drug_type_name":"Rx","usage_dosage":"\u53e3\u670d,1\u65f61\u6b21,\u4e00\u6b211\u7247,\u7528\u836f1\u5929","usage_dosage_param":"\u53e3\u670d,1,\u65f6,1,1,\u7247,1,1","quantity":1}]"
но когда я использую функцию json_decode для декодирования этой строки, она не работает:
$drug_list = json_decode(trim($string),true);
поэтому я думаю, что, возможно, в этой строке json есть обратные косые черты, поэтому я использую функцию полосовых косых черт, чтобы удалить все обратные косые черты:
$drug_list = json_decode(trim(stripcslashes($string)),true);
и это ничего не возвращает. поэтому я думаю, что, возможно, это проблема с кодировкой, поэтому я печатаю кодировку этого длинного json:
print_r(mb_detect_encoding($string));
и он печатает «ASCII», затем я попытался преобразовать кодировку в utf-8:
$string = iconv("ASCII", "UTF-8", $string);
затем я печатаю кодировку возвращаемого значения iconv, это все еще «ASCII», что сбивает с толку.
затем я попробовал другую функцию кодирования преобразования, но она все еще не работает:
mb_convert_encoding($string, 'UTF-8', "ASCII");
Я действительно сбит с толку и не смог найти способ решить эту проблему сейчас, любая помощь или информация были бы очень признательны.
Комментарии:
1. Не уверен, какие начальные и конечные кавычки
"
в посте, но отлично работают после удаления косых черт 3v4l.org/hsY4I2. Похоже,он закодирован дважды. Попробуйте расшифровать его дважды. А потом иди и исправь то, что вот так помещает это в базу данных.
3. @AbraCadaver нет, это не работает нормально, посмотрите на искаженные символы в вашем примере вывода, например
u4e00u9897u63d0u795eu9192u8111
, вместо一颗提神醒脑
4. Так что я не разбираюсь в юникоде и тому подобном, но вам, возможно, потребуется изменить кодировку, прежде чем удалять косые черты, так как это удаляет из u. Не уверен. Я имел в виду, что он расшифровывается, вы не изложили проблему в вопросе. Вы сказали, что не можете расшифровать эту строку json , которую она может.
5. @AbraCadaver да, это нормально работает в детекторе декодирования json, но в моем коде это не работает. но все равно спасибо тебе