Строка китайских иероглифов длиннее поля MySQL

Я разрабатываю веб-приложение с использованием MySQL и PHP. Некоторые пользователи будут китайцами, поэтому мне нужно протестировать мою программу с китайскими иероглифами. Поскольку китайские символы длиннее обычных символов ASCII, бывает, что поле MySQL может быть короче, чем строка с китайскими символами.

Я попытался ограничить длину ввода в два раза меньше, чем поле MySQL, как в примере ниже:

<input name='field_name' maxlength='5'> in HTML
field_name VARCHAR(10) in MySQL (all my field are encoded with utf8_unicode_ci)

Тем не менее, строка «好好 好好 好‘, состоящая из 5 символов, будет усечена.

Это важная проблема, потому что усеченные строки заканчиваются символом «�», а вызовы jQuery ajax (json) отклоняют ошибку.

Вот почему я хотел бы знать, как защитить эти входные данные на стороне клиента и сервера, чтобы целостность данных не была нарушена в любой ситуации (или, по крайней мере, отображалась, даже если она усечена).

Спасибо!


person Pierre    schedule 21.07.2015    source источник
comment
substr() field_name при ответе на вызов ajax. (лучше изменить fileld_name в mysql, varchar 10 слишком мал.)   -  person jsxqf    schedule 21.07.2015
comment
Спасибо за ответ, но он не работает .. В любом случае, как вы упомянули, я увеличу размер полей моей базы данных   -  person Pierre    schedule 22.07.2015


Ответы (1)


UTF 8 использует один символ для английского символа, но UTF 8 использует три символа для китайского символа.

person albert hou    schedule 21.07.2015
comment
Большое спасибо за ответ. Итак, если я понимаю вашу точку зрения, подходящей ситуацией является обеспечение того, чтобы поля базы данных были в 3 раза больше, чем максимальная длина соответствующих входов. Спасибо! - person Pierre; 22.07.2015