繁体   English   中英

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

[英]How to retrieve special Char from database?

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

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

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

我尝试将 HTML 代码放入数据库中,例如&#956 ; 然后它无法与数据库进行比较,因为 HTML 将其转换为µ

我怎样才能适当地做到这一点?

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

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

ALTER DATABASE db_name CHARACTER SET utf8;

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

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;

你必须为每张桌子做。

最后,非常不幸的是,您必须知道转换在旧字符集(varchar、文本等)下创建的所有字符数据列。 您必须通过首先转换为 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 发布了关于如何执行此步骤的按列类型指南: 转换数据库字符集列

然后,最后更新 xhtml 中的字符集声明(如果是 html,则不以 / 结尾):

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

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

这一切都假设 MySQL 5,您可以看到Mysql 5 ALTER TABLE参考。

在包含特殊字符的桌子上试试这个(基于这篇文章):

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;

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

请参阅 Shelhamer 的回答,但您还需要将 db 连接设置为 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 往往会出错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM