Преобразование кодовых точек Unicode в UTF-8 - PullRequest
1 голос
/ 09 июля 2009

В настоящее время у меня есть что-то вроде этого \u4eac\u90fd, и я хочу преобразовать его в UTF-8, чтобы я мог вставить его в базу данных.

Ответы [ 3 ]

2 голосов
/ 09 июля 2009
2 голосов
/ 09 июля 2009

Скорее всего, escape-последовательность \ u уже отправлена ​​веб-браузером. Это будет исходный источник вашей проблемы - вам нужно, чтобы веб-браузер прекратил это делать.

Для этого вам нужно убедиться, что браузер знает, какую кодировку использовать при отправке формы. По умолчанию браузер всегда использует кодировку HTML-страницы, содержащей форму. Убедитесь, что эта веб-страница закодирована в UTF-8 и имеет объявление кодировки UTF-8 в мета-заголовке. После этого браузер должен правильно отправлять данные в формате UTF-8, и вам вообще не нужно ничего преобразовывать.

0 голосов
/ 03 ноября 2018
json_decode('"\u4eac\u90fd"');

Кредит за использование JSON @bobince https://stackoverflow.com/a/7107750 там, где требуется обратное (от UTF-8 до кодовых точек). Там символы ASCII не будут преобразованы в кодовые точки, , но с json_decode, кодовые точки ASCII будут преобразованы в символы, например, '"\ u0041"' -> 'A'.

(Помните, что вам нужны двойные кавычки внутри вашей строки. Я был сбит с толку, почему json_decode ('\ u4eac \ u90fd'); не давал вывода: -)

Обратите внимание, что для 4-байтовых кодировок UTF-8 будут особые требования, когда кодовая точка состоит из 5 или 6 шестнадцатеричных цифр. JSON не использует фигурные скобки.

echo json_encode('?');
//output: "\ud800\udf48"

? - это U + 10348. Разделение на две части кода для меня не очевидно. Пожалуйста, уточните, имеете ли дело с 4-байтовыми кодировками UTF-8 (например, смайликами).

Это один из тех разочаровывающих примеров, когда должна существовать стандартная целевая функция *, но вместо этого нужно использовать обходной путь и найти много сложных пользовательских функций онлайн.

* Функция существует в PHP7 (http://php.net/manual/en/intlchar.chr.php),, но вам нужно установить расширение intl, которое я не считаю по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...