Я «унаследовал» установку osCommerce 2.2, PHP4 и MySQL4, что создает проблемы. Проблема в кодировке символов. Хотя таблицы определены как содержащие UTF8
они действительно содержат latin1
. Чтобы добавить к этому что-то совершенно новое, похоже, что старый кодировщик вручную изменил это, установив SET CHARACTER SET 'utf8'
при подключении к базе данных.
Теперь это выглядит так:
UTF8
но на самом деле содержит latin1
.UTF8
.ISO-8859-1
он же latin1
Эта настройка работала до тех пор, пока неделю назад не сменился поставщик. что-то (они вообще отказались касаться базы данных или чего-либо еще, но у них были проблемы с сервером).
Проблема в том, что немецкие специальные символы öäüß
отображаются правильно, но в тот момент, когда вы хотите вставить их в базу данных, все сеансы osCOmmerce прерываются и только текст, пока не будет вставлен этот символ.
Das _ä_ ist ein Umlaut
Das _
В тот момент, когда я изменяю ручное вторжение, устанавливая набор символов на latin1
когда соединение установлено, каждая вставка в порядке, но база данных только доставляет ?
вместо специальных символов.
Я понятия не имею, как решить эту проблему, если я изменю столбцы базы данных на latin1
Я теряю все специальные символы, если я изменю кодировку соединения, отображение или вставка не удастся. У меня совершенно нет идей.
Не элегантное, но обычно рабочее решение:
Когда вы меняете данные, которые находятся в другом наборе символов, вы должны сначала изменить их на blob, а затем на целевой набор символов (latin1). Если вы этого не сделаете, mysql выполнит преобразование за вас, а вы этого не сделаете, поскольку у вас уже есть данные в latin1?
AFAIK, когда вы используете set chatacter set в соединении (например, php), mysql автоматически преобразует все данные в таблице в набор символов соединения.