我有一个MySQL数据库表,我存储地址,包括Norwegain地址。为什么unicode不能在我的MySQL表中工作?
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;
现在,这张表还是很好,直到我搞砸了,意外地设置了所有城市='测试'。 Luckilly我有另外一张名为helper_zipcode
的表。此表包含挪威的邮政编码和城市。
因此,我更新了addresses
表,其中数据来自helper_zipcode
。
不幸的是,在前端,Bodø
等城市现在显示为Bod�
。
所有æ ø å
现在显示为� � �
(但他们在数据库中看起来很好)。
我使用HTML 5,所以我的头看起来像这样:
<!DOCTYPE HTML>
<head>
<meta charset = "utf-8" />
(...)
这已经不是我第一次和Unicode的斗争。
在数据库中存储unicode字符(来自欧洲)的seceret和从数据库中检索时显示相同的方式是什么?
“helper_zipcode”表的字符集是什么? – Spudley 2011-05-06 12:48:10
出于兴趣,如果您将浏览器编码从自动检测更改为UTF-8或Unicode,会发生什么情况?试图确定它的数据库或Web浏览器是否是错误的。 – 2011-05-06 12:49:35
'SET NAMES utf8;'(或'mysql_set_charset()'或任何数据库库必须提供来定义连接的字符集)可能就是这样。 – 2011-05-06 12:59:22