8

如何在 MySQL 数据库中存储欧元货币符号?

4

4 回答 4

12

创建具有支持欧元字符的字符集的列。

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

如果你的编辑器不支持 Unicde,你可以像这样插入它;

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

您还可以将欧元符号存储在其他字符集中

UTF-8                  0xE282AC
UCS-16                 0x20AC
ISO-8859-15 (latin-9)  0xA4
于 2009-11-09T20:46:41.797 回答
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
于 2009-11-09T20:46:29.423 回答
2

虽然我也推荐 UTF-8,但我想澄清一下为什么在其他编码中存储欧元符号时可能会遇到问题。

欧元符号作为补丁添加到大约 1997 年的现有 Windows 和 Mac 传统编码中。在 Windows-1252(Windows latin-1 字符集)中,选择的代码点为 0x80,MacRoman 选择了不同的位置。这一切都很好,但是许多应用程序在其 MySql 数据库架构中为拉丁 1-通用文本指定 iso-8859-1 编码,或者在 Web 应用程序中使用 iso-8859-1 标记其 HTML 输出。据我所知,Iso-8859-1 从未正式更新为映射欧元符号的代码点。支持欧元的 latin1 编码是不常用的 iso-8859-15。

因此,如果您在架构中使用 iso-8859-1 编码,您将有未定义或更糟糕的行为。

于 2009-11-09T21:02:44.020 回答
1

我不知道您真正想要什么,但是将其存储到 VARCHAR 中并使用 utf-8 编码没有问题

于 2009-11-09T20:46:01.573 回答