我有一个MySQL数据库表,我存储地址,包括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;
现在,这张桌子很好,直到我搞砸了,并且意外地设置了所有城市='测试'。 Luckilly我有另一张名为helper_zipcode
的桌子。此表包含挪威的alle zipcodes和城市。
所以我使用addresses
的数据更新了helper_zipcode
表。
不幸的是,在前端,像Bodø
这样的城市现在显示为Bod�
所有æ ø å
现在显示为� � �
(但它们在数据库中看起来很好)。
我正在使用HTML 5,因此我的标题如下所示:
<!DOCTYPE HTML>
<head>
<meta charset = "utf-8" />
(...)
这不是我第一次与unicode斗争。
在DB中存储unicode字符(来自欧洲)并从DB中检索时显示相同的方法是什么?
答案 0 :(得分:3)
来自mysql docs:
5月2日发布者:lorenz pressler 2006 12:46 pm [删除] [编辑]
如果你 从你的mysql-db通过php获取数据 (所有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
,但这只适用于 äüöéè......等等,但不是 kyrillic和其他字符。
您的问题是存储在mysql中的数据还是使用php检索存储的数据?
答案 1 :(得分:1)
在查询之前(第一次)你必须添加mysql_query(“SET NAMES UTF8”);.
答案 2 :(得分:0)
如果您将浏览器编码从自动检测更改为UTF-8或Unicode,会发生什么?
我正在尝试确定数据库或Web浏览器是否错误。
可替换地。如果你有一个MySQL数据库的数据库工具,它会显示正确或错误的字符吗?