Почему Unicode не работает в моей таблице MySQL? - PullRequest
0 голосов
/ 06 мая 2011

У меня есть таблица MySQL DB, в которой я храню адреса, включая адреса Norwegain.

CREATE TABLE IF NOT EXISTS `addresses` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `street1` varchar(50) COLLATE utf8_danish_ci NOT NULL,
  `street2` varchar(50) COLLATE utf8_danish_ci DEFAULT 'NULL',
  `zipcode` varchar(10) COLLATE NOT NULL,
  `city` varchar(30) COLLATE utf8_danish_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `index_store` (`name`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci;

Теперь эта таблица была в порядке, пока я не облажался и случайно не установил все города = 'test'. К счастью, у меня был еще один стол с именем helper_zipcode. Эта таблица содержит все почтовые индексы и города для Норвегии.

Итак, я обновил addresses таблицу с данными из helper_zipcode.

К сожалению, в передней части такие города, как Bodø, теперь отображаются как Bod�.
Все æ ø å теперь отображаются как � � � (но они отлично выглядят в БД).

Я использую HTML 5, поэтому мой заголовок выглядит так:

<!DOCTYPE HTML>
  <head> 
    <meta charset = "utf-8" />
  (...)

Я не впервые борюсь с юникодом.

Какова последовательность хранения символов юникода (из Европы) в БД и их отображение при извлечении из БД таким же образом?

Ответы [ 3 ]

3 голосов
/ 06 мая 2011

из mysql документы :

Автор: Лоренц Пресслер, 2 мая 2006 12:46 [Удалить] [Редактировать]

если вы получить данные через php от вашего mysql-db (все UTF-8), но все еще получить '?' для некоторых специальных символов в вашем браузер (<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />), попробуйте это:

после mysql_connect() и mysql_select_db() добавить эти строки: mysql_query("SET NAMES utf8");

работал на меня. я попробовал сначала с utf8_encode, но это работало только для äüöéè ... и так далее, но не для кириллица и другие символы.

Есть ли у вас проблемы с хранением данных в mysql или с извлечением сохраненных данных с помощью php?

1 голос
/ 09 мая 2011

Перед запросом (1-й раз) вам необходимо добавить mysql_query ("SET NAMES UTF8");.

0 голосов
/ 06 мая 2011

Что произойдет, если вы измените кодировку браузера с автоматического определения на UTF-8 или Unicode?

То, что я пытаюсь определить, является ли база данных или веб-браузер неправильной.

В качестве альтернативы. если у вас есть инструмент базы данных для базы данных MySQL, показывает ли это правильные или неправильные символы?

...