Всем привет. Интегрирую через api сервис, который отвечает на корейском языке. Ключи на английском а значения корейский. Если результат ответа json передать в функцию json_decode, ошибка: Malformed UTF-8 characters, possibly incorrectly encoded Если через функцию: mb_convert_encoding($this>response, 'UTF-8', 'UTF-8'); То json удается распарсить без ошибок, но пропадает часть иероглифов, замещаемые знаком вопроса. Подскажите может кто сталкивался, как по максимуму сохранить иероглифы Спасибо
А вы узнайте в какой кодировке корейские символы иероглифы явно они в utf8 обычный не входят... Че-нить как минимум utf8_mb4 а может и другая
Для корейского языка есть варианты не уникодной кодировки. https://dicom.nema.org/dicom/2013/output/chtml/part05/chapter_I.html Если же всё-таки уникод, он может быть запакован в UTF-8 (размер символов разный) или не запакован (каждый символ 32 bit). Для сохранения азиатских символов в UTF-8, насколько я знаю, используют 4 байта. Если эти тексты сохраняются в базу MySQL, то надо в ней выбирать utf8_mb4.
Спасибо Решение json стал работать PHP: private function json_encode_unicode($data): mixed { if (defined('JSON_UNESCAPED_UNICODE')) { return json_encode($data, JSON_UNESCAPED_UNICODE); } return preg_replace_callback('/(?<!\\\\)\\\\u([0-9a-f]{4})/i', function ($m) { $d = pack("H*", $m[1]); $r = mb_convert_encoding($d, "UTF8", "UTF-16BE"); return $r !== "?" && $r !== "" ? $r : $m[0]; }, json_encode($data) ); }