В настоящее время мы делаем приложение PHP с codeigniter, и у нас есть доступ к 2 базам данных, одна в UTF-8 (наш MySQL) и одна в Latin1 (SQL_Latin1_General_CP1_CI_AS в MSSQL), эта база данных latin1 доступна только для чтения, у нас нет контроль над ним, поэтому мы не можем его изменить.
Наша проблема заключается в том, что некоторые латинские символы отображаются как черные ромбы.
Мы установили соединение с базой данных на codeigniter как:
'dbdriver' => 'mssql',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci'
И наш PHP имеет следующую кодировку:
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_language('uni');
mb_regex_encoding('UTF-8');
И наши файлы также сохраняются в кодировке UTF8.
Мы думали, что, поскольку latin1 является подмножеством utf8, проблем не будет, но появляются черные ромбы. Одним из найденных решений является использование utf8_encode непосредственно перед отображением текста, полученного из базы данных MSSQL, но это похоже на XGH, должен быть лучший способ.
Итак, в основном вопрос заключается в том, как выбрать и показать UTF8 (потому что php - это UTF8) из базы данных, которая находится на Latin1?
Спасибо за ваше время