我正在尝试从MySQL数据库中检索特殊的希腊字符µ
,但是在HTML中
显示此�
。
我的HTML字符集:content="text/html; charset=windows-1252"
此外,在检索字符后,还需要能够使用该字符在数据库中进行比较。
我已经尝试将HTML代码放在数据库中,如μ
;然后它无法与数据库进行比较,因为HTML将其转换为µ
。
我该怎么做呢?
答案 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()
之前将其保存到数据库中。
它将解决问题