мои столбцы имеют формат utf-16, поэтому он должен занимать примерно 32767 символов (не включая символы в МБ). Мой вопрос в том, что у меня есть строка длиной 21 КБ при проверке с помощью функции strlen(), но моя база данных выдает ошибку, потому что значение, которое я пытаюсь ввести, превышает предел. я пытаюсь выяснить, в чем именно здесь проблема.
как я могу проверить размер строки в байтах с помощью php? поэтому я могу проверить ту же сортировку базы данных mysql и выдать ее, не отправляя запрос к базе данных, на уровне php.
Я пробовал отлаживать размеры байтов и длины символов, выполняя некоторые сравнения, но безуспешно.
Я получаю эти результаты, когда сбрасываю сравнения для значения, которое пытаюсь вставить:
Код: Выделить всё
"max_bytes": 65535,
"strlen": 23271,
"mb_strlen": 23271,
"mb_strlen_utf8": 23271,
"mb_strlen_utf16": 11636,
"mb_strlen_utf32": 5817,
"schema_field": {
"type": "text",
"default": null,
"nullable": true,
"unique": false,
//---max_length shown as the CHARACTER_MAXIMUM_LENGTH of INFORMATION_SCHEMA table,
//The actual byte limit is 2 to the power of 16,
//so i should be fine unless i go over 65k bytes
"max_length": "32767",
"charset": "utf16"
},
strlen, вероятно, возвращает мне кодировку utf8 по умолчанию для PHP, и он также должен считать mb как отдельный байт, это то, что мне нужно, поэтому я не понимаю, в чем проблема.
Подробнее здесь: https://stackoverflow.com/questions/793 ... return-the