В настоящее время я использую базу данных 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 без изменения правильных?
ответ
Вы можете изменить кодировку базы данных так же, как и она, и она будет работать в том, что в базе данных хранятся строки в 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, чтобы сделать это автоматически.
, но проблема UTF-8 в том, что он не может хранить или отображать ä или ö, я решил его с помощью регулярного выражения: $ regex = "(([äöÄÖa-zA-Z0-9] * + \ s *) +) "; это заботится о значениях, которые отображаются правильно, но все же позволяет изменить неправильные значения. – user1806834
MySQL является лишь одним из действующих лиц. См. [UTF-8 на всем пути] (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) –
Итак, у вас есть * некоторые * данные в вашей базе данных, и у вас есть * некоторые * данные, которые являются правильными? Или [Работа с интерфейсом Unicode Front To Back в веб-приложении] (http://kunststube.net/frontback/)? – deceze