Испанские символы не правильно кодируют - PullRequest
1 голос
/ 18 февраля 2011

Я работаю над проектом на Филиппинах, где у многих людей есть специальные латинские символы тильды в их именах.

У меня есть база данных, в которой все таблицы на латинице 1 установлены с сопоставлением latin1_swedish_ci.

+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | latin1                         |
| character_set_connection | latin1                         |
| character_set_database   | latin1                         |
| character_set_filesystem | binary                         |
| character_set_results    | latin1                         |
| character_set_server     | latin1                         |
| character_set_system     | utf8                           |
| character_sets_dir       | C:\xampp\mysql\share\charsets\ |
+--------------------------+--------------------------------+

Заголовки моей веб-страницы объявляют iso-8859-1 в качестве набора символов.

Когда я отправляю имя сотрудника, содержащее символ тильды, например, через мои веб-формы, оно появляется в моей таблице как 'Marie Cañon 'и появляется на моих веб-страницах так же, когда я просматриваю запись сотрудника.

Если я изменю кодировку веб-страницы на utf-8, она будет корректно отображаться как «Marie Cañon».Итак, я предполагаю, что каким-то образом я кодирую UTF-8 в моих таблицах latin1.Но я не совсем понимаю, где это может произойти.

Насколько я знаю, PDO не занимается кодированием.Мои веб-страницы объявлены iso-8859-1, поэтому я полагаю, что PHP не вызывает проблемы.Мой персонаж_с_связи в лат. 1 является латинским.

Где это может произойти?

Дополнительная информация: Ubuntu 10.04.2 LTS MySQL 5.1.41-3ubuntu12.9-log PHP5: 5.3.2 Apache2:2.2.14

Ответы [ 2 ]

6 голосов
/ 18 февраля 2011
  1. Переключите MySQL на utf-8.
  2. Установите расширение mbstring PHP и настройте его.
  3. Сделайте ваши заголовки PHP: header('Content-type: text/html; charset=UTF-8'); и
  4. HTMLheaders <meta http-equiv="Content-type" value="text/html; charset=UTF-8" /> и
  5. отметьте это шпаргалка .
4 голосов
/ 01 сентября 2013

это сработало для меня:

$ title = mb_convert_encoding ($ article ['title'], "UTF-8", "iso-8859-1");

для испанскогоакценты

...