MySql собирает базу данных только на английском, но не на других - PullRequest
0 голосов
/ 10 июля 2011

У меня есть раздел с комментариями и форма для отправки, которую может отправить любой из моих участников.
Если мой участник отправит сообщение на английском языке, я получу обновление по электронной почте, а в комментарии не будет проблем на английском языке.Но если они используют не английский, то такой пример тайского языка.Тогда что произойдет, все слова, скажем, скажем, например, สวัสดี, будут отображаться как ??????

Я не знаю почему, но я пошел, чтобы проверить мой файл php.ini и установлен ли Unicode / закодированныйв UTF8, а также в сопоставлении MySQL, установленном в UTF8.Я проверяю, что в файлах .html / .php также установлена ​​мета UTF8, но все равно возникает та же проблема.

Любое предложение, что еще я пропустил для настройки?

Ответы [ 2 ]

1 голос
/ 10 июля 2011

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

Из руководства по PHP mbstring:

В то время как существует много языков, на которых каждый необходимый символ может быть представлен сопоставлением «один к одному» с8-битное значение, есть также несколько языков, которые требуют так много символов для письменного сообщения, что они не могут содержаться в пределах диапазона, который может закодировать простой байт (Байт состоит из восьми битов. Каждый бит может содержать только два различных значения,один или ноль. Из-за этого байт может представлять только 256 уникальных значений (от двух до степени восьми).Схемы многобайтового кодирования символов были разработаны для выражения более 256 символов в обычной системе побайтного кодирования.

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

mbstring предоставляет специальные многобайтовые строковые функции, которые помогут вам справиться с многобайтовыми кодировками в PHP.В дополнение к этому, mbstring обрабатывает преобразование кодировки символов между возможными парами кодирования.mbstring предназначен для удобства кодирования на основе Unicode, такого как UTF-8 и UCS-2, и многих однобайтовых кодировок для удобства

0 голосов
/ 10 июля 2011

Я только что узнал, что причина проблемы

в php.ini

строке mbstring.internal_encoding она была установлена ​​на что-то другое, поэтому я установил ее на UTF-8, а затем на волшебство!теперь все заработало!

...