2011-07-07 36 views
1

我想从MySQL数据库中检索一个特殊的希腊字符µ,但在HTML中显示为 ,显示此如何从数据库中检索特殊的字符?

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

此外,它检索它也需要能够使用的字符比较早在数据库中的字符之后。

我试过把HTML代码放在数据库中,比如μ那么它不能与数据库进行比较,因为HTML会将它变成µ

我该如何适当地做到这一点?

+0

你是否已经正确定义了mysql中的charset? –

+0

我相信MySQL的默认字符集是latin1 – BumbleB2na

+0

我很确定它是默认的字符集。我必须设置哪一个? – TheRealDK

回答

1

试试这在包含特殊字符(based off of this post)你的表:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8; 
+0

我试过但仍然卡住。 – TheRealDK

+1

这将转换表中的字符集,但不会转换每列已存储的字符集,或转换存储在我的答案的最终数据库步骤中的数据。 – shelhamer

2

首先,我会建议使用UTF-8作为你的字符集。

开始通过切换默认数据库:

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更新字符集声明(或没有结局/如果是HTML):

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

这个过程是艰苦的,但会转换数据库。在utf8中启动数据库要容易得多。

这是所有假设的MySQL 5,为此您可以看到Mysql 5 ALTER TABLE参考。

0

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

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

不过,我还是会建议你使用ヶ辆显示网站上的内容时,要确保的是()的所有有效的HTML。如果混淆编码,Firefox往往会陷入困境。

0

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

相关问题