Php 为什么unicode在我的MySQL表中不起作用?

Php 为什么unicode在我的MySQL表中不起作用?,php,mysql,html,unicode,Php,Mysql,Html,Unicode,我有一个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', `zi

我有一个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;
现在,这张桌子很好,直到我搞砸了,意外地设置了所有的城市=‘测试’。Luckilly我有另一个名为
helper\u zipcode
的表。此表包含挪威的所有Zipcode和城市

所以我用
helper\u zipcode
中的数据更新了
addresses

不幸的是,在前端,像
Bodø
这样的城市现在显示出像
Bod�
所有
æå
现在显示为
� � �(但它们在数据库中看起来很好)

我使用的是HTML 5,因此我的标题如下所示:

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

(...)
这不是我第一次使用unicode


在数据库中存储unicode字符(来自欧洲)并在从数据库检索时以相同方式显示的安全性是什么?

如果将浏览器编码从自动检测更改为UTF-8或unicode,会发生什么情况

我想确定的是数据库还是网络浏览器出了问题


或者。如果您有一个用于MySQL数据库的数据库工具,它会显示正确或错误的字符吗?

如果您将浏览器编码从自动检测更改为UTF-8或Unicode,会发生什么情况

我想确定的是数据库还是网络浏览器出了问题

或者。如果您有一个用于MySQL数据库的数据库工具,它会显示正确或错误的字符吗?

来自MySQL:

洛伦兹·普雷斯勒于5月2日发布 2006年12时46分[删除][编辑]

如果你 通过php从mysql数据库获取数据 (所有utf-8)但仍然得到“?” 为您的游戏中的一些特殊角色 浏览器(
),请尝试以下操作:

mysql\u connect()
之后,以及
mysql\u选择\u db()
添加以下行:
mysql\u查询(“SET NAMES utf8”)

为我工作。我先试了一下
utf8\u编码
,但这只适用于 äüöéè... 等等,但不是为了 基里尔语和其他字符

在mysql中存储数据或使用php检索存储的数据时出现问题吗?

从mysql:

洛伦兹·普雷斯勒于5月2日发布 2006年12时46分[删除][编辑]

如果你 通过php从mysql数据库获取数据 (所有utf-8)但仍然得到“?” 为您的游戏中的一些特殊角色 浏览器(
),请尝试以下操作:

mysql\u connect()
之后,以及
mysql\u选择\u db()
添加以下行:
mysql\u查询(“SET NAMES utf8”)

为我工作。我先试了一下
utf8\u编码
,但这只适用于 äüöéè... 等等,但不是为了 基里尔语和其他字符


在mysql中存储数据或使用php检索存储的数据时出现问题吗?

在查询(第一次)之前,您必须添加mysql\u查询(“设置名称UTF8”)

在查询(第一次)之前,您必须添加mysql_查询(“SET NAMES UTF8”)

helper\u zipcode
表的字符集是什么?出于兴趣,如果您将浏览器编码从自动检测更改为UTF-8或Unicode,会发生什么情况?试图确定是数据库还是Web浏览器出错。
SET NAMES utf8
(或
mysql\u set\u charset()
或数据库库提供的定义连接字符集的任何内容)可能就是它。@Russ C-没有区别。所以这不是浏览器的问题。@Spudley,在我更改它之前,它被设置为
DEFAULT CHARSET=utf8现在我将其更改为
默认字符集=utf8 COLLATE=utf8\u danish\u ci。但是,即使我通过MySQL管理器应用程序(
Toad for MySQL
)更改城市名称,我仍然会收到奇怪的框。
helper\u zipcode
表的字符集是什么?只是出于兴趣,如果您将浏览器编码从自动检测更改为UTF-8或Unicode会发生什么?试图确定是数据库还是Web浏览器出错。
SET NAMES utf8
(或
mysql\u set\u charset()
或数据库库提供的定义连接字符集的任何内容)可能就是它。@Russ C-没有区别。所以这不是浏览器的问题。@Spudley,在我更改它之前,它被设置为
DEFAULT CHARSET=utf8现在我将其更改为
默认字符集=utf8 COLLATE=utf8\u danish\u ci。但是,即使我通过MySQL管理器应用程序(
Toad for MySQL
)更改城市名称,我仍然会收到奇怪的框。没有名为
NVARCHAR
的数据类型。我找到的唯一参考资料是thishttp://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html. 那么我在哪里做这件事呢?是的,很抱歉,我误读了这个问题,虽然是SQL server。没有名为
NVARCHAR
的数据类型。我找到的唯一参考资料是thishttp://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html. 那我该在哪里做呢?是的,很抱歉,我误读了这个问题,虽然是SQL server。事实上就是这样。我将它添加到我的PDO连接
数组(PDO::MYSQL\u ATTR\u INIT\u COMMAND=>“SET NAMES utf8”)
。我不得不升级到PHPV5.3,因为在早期版本中有一个bug阻止我使用它。事实上就是这样。我将它添加到我的PDO连接
数组(PDO::MYSQL\u ATTR\u INIT\u COMMAND=>“SET NAMES utf8”)
。我不得不升级到PHPV5.3,因为早期版本中有一个bug阻止我使用它。