2009-11-09 2 views

ответ

11

Создать столбец с набором символов, который поддерживает символ Евро.

CREATE TABLE MyTable 
(
    MyEuroColumn VARCHAR(5) 
     CHARACTER SET utf8 
     COLLATE utf8_general_ci 
); 

Если ваш редактор не поддерживает Unicde, вы можете вставить его как;

select concat('Five ', _ucs2 0x20AC, ' please!') 

Вы также можете хранить символ евро в other character sets:

UTF-8     0xE282AC 
UCS-16     0x20AC 
ISO-8859-15 (latin-9) 0xA4 
1

Я не знаю, что вы действительно хотите, но нет никаких проблем при хранении его в VARCHAR с кодировкой utf8

4

Если таблица или столбец устанавливается в кодировке utf8, что-то вроде этого произведения штраф:

insert into test values (1, '€ <- euro'); 

Кроме того, добавьте в строке подключения в клиенте, чтобы убедиться, что соединение использует UTF8:

CharSet=UTF8; 

в таблице я использовал для тестирования следовать :

CREATE TABLE `g`.`test` (
    `id` int(11) NOT NULL auto_increment, 
    `name` varchar(10) character set utf8 NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 
2

Хотя я также рекомендую UTF-8, я хотел бы добавить некоторые разъяснения о том, почему вы можете иметь проблемы хранения символа Евро в другие кодировки.

Символ евро был добавлен как исправление к существующим кодировкам Windows и Mac около 1997 года. В Windows-1252 набор символов латинского языка Windows, выбранный код был 0x80, а MacRoman выбрал другое место. Все в порядке, но многие приложения определяют кодировку iso-8859-1 в своей базе данных MySql Schema для латинского 1-общего текста или отмечают их вывод HTML в веб-приложениях с помощью iso-8859-1. Iso-8859-1 никогда, насколько мне известно, официально не обновлялся, чтобы сопоставить код для символа евро. Кодировка latin1, которая поддерживает Евро, редко используется iso-8859-15.

Итак, если вы используете кодировки iso-8859-1 в своей схеме, у вас будет неопределенное или худшее поведение.

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