Проблема здесь в интернационализации на стороне JavaScript, а не в сопоставлении вашей таблицы БД.Если у вас раньше не было таких проблем, скорее всего, ранее никто не вводил международные символы, или набор символов ваших HTML-страниц был ISO-8859-1 / cp1252 (что ограничивало бы данные формы POST на стороне клиента.) Новыйпользователи или измененные заголовки HTML могли бы вызвать эту проблему, но проблема действительно на стороне сценария Perl.
JSON определяет строки как наборы символов в двойных кавычках с escape-последовательностями Unicode когда необходимо более 7-битное кодирование.Первые 127 ISO-8859-1 символов могут быть представлены как есть, но любые расширенные ASCII / многобайтовые символы будут заканчиваться как значения \ uXXXX.Например, символ é (e-sharp), который является # 233 в ISO-8859-1, будет отображаться как \ u00E9 (так как é равно U + 00E9 в Unicode), а строка «резюме» будет храниться как «r\ u00E9sum \ u00E9 ".
Не зная, что пытается сделать ваш Perl-скрипт, все, что я могу сказать, это то, что он может испытывать трудности при попытке отменить ссылку на escape-последовательность.Perl имеет свой собственный набор escape-последовательностей, и \ u средняя строка фактически означает «сделать следующий символ заглавными», так что вы, вероятно, видите много «00E9» вещей из вашего сценария Perlвместо акцентированных символов, или вы можете получить ошибки разбора в зависимости от вашего скрипта.
Поскольку вы создаете / сохраняете JSON из данных POST в PHP, у вас есть несколько опций:
- Преобразование специальных символов в объекты HTML ( htmlentities () )
- Принудительное сокращение всех специальных символов из последовательностей UTF-8 (если это то, что входит в ваши данные POST) в ISO-8859-1 через utf8_decode () (при таком подходе вы можете потерять данные )
- Очистить результирующий JSON, заменив это совпадение с REGEX: / \\ u [a-zA-Z0-9] {4,4} / с "" (ничего) (при таком подходе вы можете потерять данные )
- Дважды экранировать результирующий JSON, изменив все "\ "символы в" \\ "перед передачей его в скрипт Perl ( остерегайтесь внедрения SQL! )