2015-02-10 2 views
-2

У меня есть база данных, которую я запускаю с использованием MySql и codeigniter, в которых есть сочетание английских и французских имен.Codeigniter + Mysql = акценты не сохраняются должным образом

Французские имена, такие как Андре, возвращаются как Андрэ и другие различные, очевидно, неправильные.

Как предотвратить это, и что мы можем положить Андре и вернуть Андре?

Спасибо!

+0

Вы установили базу данных mysql в UTF-8/Unicode? –

+0

Возможный дубликат [UTF-8 на всем пути] (http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) –

+0

Сопоставление таблиц Utf8_unicode_ci, сопоставление строк - UTF8_Unicode_CI, база данных кодеригентов настройки, установлены на Utf8_unicode_ci Я что-то упустил? – JonYork

ответ

0

Оказывается, мне пришлось указать php, что utf-8 был по умолчанию в файле конфигурации. С тех пор все хорошо!

0

Если ваши настройки базы данных установлены на UTF-8 (и по звуку ваших комментариев они есть), вы можете видеть эти странные символы, потому что ваша страница не отображается как UTF-8.

Документы UTF-8 должны поставляться с заголовком Content-Type, чтобы сказать, какую кодировку они должны обрабатывать. Для того, чтобы добавить этот заголовок можно добавить следующий код либо до, либо после того, как ваш взгляд/с загружался:

$this->output->set_content_type('text/html; charset=utf-8'); 

В следует добавить следующую строку вашего документа:

<meta charset="utf-8"> 

Если вы рендеринга текста только тогда вы захотите изменить часть заголовка, где он говорит text/html, что-то более подходящее, например text/plain.

+0

Я посмотрел на значение базы данных в Phpmyadmin, он имеет правильный акцент и орфографию, так что теперь это проблемы с Codeigniter. Это было в моем заголовке для всех моих просмотров "" Ничего не меняется, когда я помещаю «$ this-> output-> set_content_type ('text/html; charset = utf-8'); в контроллере перед загрузкой представления. – JonYork

+0

Он должен логически работать, но без полной настройки я бы рекомендовал просто использовать функцию 'htmlentities()' (http://php.net/htmlentities) для отображения имен UTF-8. Затем код, доставленный в браузер, должен показывать «Andr & eacute; e' вместо' Andrée'. –

Смежные вопросы