Я использую криптографическую функцию в PHP (mcrypt_create_iv). Я видел, что в моей таблице базы данных поле, в котором хранится это возвращаемое значение функции, имеет кодировку latin1_swedish_ci
, тогда как в CodeIgniter (config/database.php) для кодировки установлено значение utf8
.Имея разные серверные и базовые кодировки - CodeIgniter
Я тестировал сохранение кодировки как utf8
в CI и запускаю метод, который хранит зашифрованные данные в столбце таблиц, но он возвратил кучу вопросительных знаков и прочее, что не заставило меня чувствовать уверенность в том, что функция mcrypt работала ,
Поэтому я изменил код базы данных CIs на latin1
, что совпадает с полем в моей таблице баз данных. Мой конфигурационный файл DB теперь выглядит следующим образом:
$db['default']['char_set'] = 'latin1';
$db['default']['dbcollat'] = 'utf8_general_ci';
мне было интересно, если бы какие-либо проблемы, вызванные использованием как latin1
и utf8
? Я чувствую, что он просто выглядит не так, используя два разных кодировки и все, но для того, чтобы использовать функцию mcrypt_create_iv
(которая используется для соляных паролей, большое дело imo), я прибегал к тому, чтобы делать это в любом случае, надеясь, что это не повлияет ни на что (т.е. вставка/получение данных обратно правильно).
Может кто-то пролить некоторый свет, я был бы очень признателен. Спасибо
То, что вы видите контрольные вопросы в базе данных, не означает, что данные неверны в базе данных, поскольку данные отображаются как латинские, но это utf8 (например). Однако всегда лучше использовать одну и ту же кодировку в вашем приложении, базе данных и подключении. – Haneev
@Haneev Знаки вопроса появляются, когда у меня есть кодировка как utf8. Я бы не стал использовать latin1, если бы я не видел столько вопросительных знаков в шифровании. Но вы говорите, что если я буду хранить все до utf8, функция mcrypt все равно сможет расшифровать правильный пароль? – a7omiton