Разница между локальным и производственным декодированием строк из базы данных - PullRequest
0 голосов
/ 12 мая 2018

Я поддерживаю довольно старую систему PHP, которая взаимодействует с таблицей базы данных mysql Styles, которая имеет кодировку latin1.Синтаксис создания (показан только соответствующий столбец) приведен ниже:

CREATE TABLE `StylesTbl` (
  `styleName` varchar(40) COLLATE latin1_danish_ci NOT NULL,
) ENGINE=MyISAM AUTO_INCREMENT=21976 DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci;

Например, запись в базе данных для styleName:

"Городской пейзаж 20", черный +Городской пейзаж 24 ”wine”.

Который на производственном сервере выглядит так:

«Городской пейзаж 20� черный + Городской пейзаж 24� вино»

Однако текст выглядит совершенно нормальномой локальный экземпляр сервера, на котором выполняется тот же код.Исходя из этого, я предполагаю, что различия должны заключаться либо в

  1. версии PHP (но и сервер, и мой локальный экземпляр используют 5.6.30)
  2. версия Mysql (сервер использует 5.5, Мой локальный - 5.6 - может ли это повлиять на него ??)

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

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

1 Ответ

0 голосов
/ 12 мая 2018

Несмотря на то, что с этой базой данных было больше проблем, чем было в исходном вопросе, мой первоначальный вопрос был получен, когда я проверил переменные character_set_* как на сервере, так и на локальном экземпляре MYSQL.

Нана сервере почти все, например, character_set_connection был установлен на latin1, тогда как мой локальный экземпляр имел character_set_connection на utf-8.Вот где возникло несоответствие.Спасибо за комментарии, ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...