如何从数据库中检索特殊字符?

时间:2011-07-07 17:28:55

标签: mysql html special-characters

我正在尝试从MySQL数据库中检索特殊的希腊字符µ,但是在HTML中 显示此

我的HTML字符集:content="text/html; charset=windows-1252"

此外,在检索字符后,还需要能够使用该字符在数据库中进行比较。

我已经尝试将HTML代码放在数据库中,如μ然后它无法与数据库进行比较,因为HTML将其转换为µ

我该怎么做呢?

4 个答案:

答案 0 :(得分:2)

首先,我建议使用utf8作为你的字符集。

首先切换数据库的默认值:

ALTER DATABASE db_name CHARACTER SET utf8;

接下来,要将表切换到utf8,请应用此SQL:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;

你必须为每张桌子做。

最后,非常不幸的是,您必须知道转换在旧字符集(varchar,text等)下创建的所有字符数据列。你必须通过首先转换为BLOB来实现这一点,以便已经存储的字符不被破坏:

alter table tbl_name change col_name col_name LONGBLOB;
alter table tbl_name change col_name col_name LONGTEXT CHARACTER SET utf8;

Wordpress按列类型指南发布关于如何执行此步骤的列类型:converting database charset columns

然后,最后更新你的xhtml中的charset声明(或者没有结尾/如果它是html):

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

此过程非常艰巨,但会转换数据库。在utf8中启动数据库要容易得多。

这都是假设MySQL 5,你可以看到Mysql 5 ALTER TABLE引用。

答案 1 :(得分:1)

在包含特殊字符(based off of this post)的表格中尝试此操作:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;

答案 2 :(得分:0)

请参阅Shelhamer的回答,但您还需要将数据库连接设置为utf8。您可以在连接到数据库后立即使用mysql_set_charset('utf8');。或者在连接后运行以下查询:

SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8';

但是,我仍然建议您在网站上显示内容时使用htmlentities()以确保所有有效的HTML。如果混淆编码,Firefox往往会barf。

答案 3 :(得分:0)

在使用utf8_encode()之前将其保存到数据库中。 它将解决问题