Я читал UTF-8, но мне нужен совет.UTF-8 и многоязычный сайт
Пример. У меня есть форма, где пользователь может вводить текст. Это может быть английский, а также японский. На следующей странице выводится текст и сохраняется в БД.
Все (или должно быть) определено как UTF-8. Все работает нормально, пока мы не добавим арабские или японские письма キ
. Эти буквы становятся (если я правильно понял) форму Unicode %u06458
.
Теперь вещь, я знаю, как вывести эти буквы:
$x= preg_replace('/%u([0-9A-F]+)/', '&#x$1;', $x);
Это сделает его UTF-8 код и вывести Japenese письмо просто отлично.
Но мой вопрос: я хочу проверить длину и сохранить ее в моей БД. Но одно японское письмо уже 8-бит по сравнению с обычной буквой, которая является 1-битной.
- Как проверить длину текста? Как
AA = 2
иキキ = 2
. - Будут ли такие буквы всегда храниться как 8-бит
%u06458
в моей базе данных? Что делать, если у меня есть текст, который имеет 2000 слов на японском языке (2000 * 8 бит)? Это в 8 раз больше, чем текст на английском языке. - Любые общие советы?
Да, чтобы сохранить его в базе данных, необходимо установить кодировку перед началом работы с БД. В mysqli это будет '$ db-> set_charset ('utf8');' например. – martinstoeckli
mb_strlen отлично работает с 'ß', но с' م' он продолжает возвращать 8. Если я ничего не делаю '$ strLength = mb_strlen ($ str, 'UTF-8');' –
@Nicolas. - Код 'echo mb_strlen ('م');' возвращает 2 в моем тесте. Вы сохранили файл PHP в формате UTF-8 (формат файла не декларация кодировки)? – martinstoeckli