2013-04-01 3 views
0

В настоящее время я использую базу данных MySQL, а предыдущий парень, который поддерживал базу данных, изменил набор символов от ISO-8859-1 до UTF-8. Теперь возникает проблема, что каждый ä переходит в ä. Теперь я написал код для изменения всех записей во всей базе данных. Но, видимо, есть некоторые слова, которые правильно написаны. Так, например, у вас есть слово, подобное Pöytäkrono, и слово вроде Sisäänkirjautuminen. Если я использую iconv('UTF-8', 'ISO-8859-1', Pöytäkrono), он даст Pöytäkrono, , но когда я использую iconv('UTF-8', 'ISO-8859-1', Sisäänkirjautuminen), он даст S. Поскольку база данных довольно большая, я хочу сделать это автоматически, но я не хочу, чтобы слова, которые были правильно написаны/записаны, меняли только те, которые ошибочны.Как я могу изменить набор символов базы данных mysql с php без изменения правильных?

+0

MySQL является лишь одним из действующих лиц. См. [UTF-8 на всем пути] (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) –

+0

Итак, у вас есть * некоторые * данные в вашей базе данных, и у вас есть * некоторые * данные, которые являются правильными? Или [Работа с интерфейсом Unicode Front To Back в веб-приложении] (http://kunststube.net/frontback/)? – deceze

ответ

0

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

Но то, что также нужно изменить:

  • Текстовый редактор кодирования должен быть установлен в UTF-8. Строки PHP непосредственно в исходном коде имеют кодировку, в которую был установлен ваш текстовый редактор.

  • < База данных -> PHP транспорт кодирование, которое, вероятно, даже не существует в вашем коде, потому что он по умолчанию ISO-8859-1. Для UTF-8 вам нужно явно позвонить mysql_set_charset("utf8") перед выполнением запросов.

  • Объявление кодировки веб-сайта также по умолчанию соответствует стандарту ISO-8859-1. Вам нужно явно позвонить header("Content-Type: text/html; charset=UTF-8") или настроить, например, apache, чтобы сделать это автоматически.
+0

, но проблема UTF-8 в том, что он не может хранить или отображать ä или ö, я решил его с помощью регулярного выражения: $ regex = "(([äöÄÖa-zA-Z0-9] * + \ s *) +) "; это заботится о значениях, которые отображаются правильно, но все же позволяет изменить неправильные значения. – user1806834