【发布时间】:2009-11-26 17:26:57
【问题描述】:
我仍在学习 PHP 和 MySQL 的基本知识,我知道我在这里设置字符集的方式有问题,但无法通过阅读此处和网上的内容完全弄清楚我应该做什么.
我有一个使用 PHP 5、MySQL 5 的标准 LAMP 安装。我将所有内容都设置为默认值。当我的一些用户向我们的数据库输入 cmets 时,一些字符显示不正确 - 目前主要是撇号和破折号。在 MySQL 中,撇号显示为 ’。它们也以这种方式显示在页面上(我正在使用 htmlentities 来输出用户 cmets)。
在 phpMyAdmin 中它说我的 MySQL 字符集是 UTF8-Unicode。
在我的数据库中,我的表都设置了默认的 Latin1-Swedish-ci。
我的网页都有 meta http-equiv="Content-Type" content="text/html; charset=utf-8"
当我查看网站的 http 标头时,我看到:Content-Type: text/html
就像一个新手一样,我根本没有考虑过字符集,直到我的某些页面开始看起来很奇怪。那么将所有内容转换为 utf-8 对我来说最有意义吗?这会影响我的 PHP 代码吗?还是我应该试着把它全部变成拉丁语?我是否必须进入数据库并替换这些奇怪的代码,或者一旦我正确设置了字符集,它们会神奇地显示?到目前为止我所做的所有摆弄都没有帮助(我将 http 标头设置为 utf-8,还尝试了拉丁文)。
【问题讨论】:
-
您桌子上的 Latin1-Swedish-ci-stuff 可能是排序规则。以后我会担心排序规则。
-
啊!所以这意味着我已经把东西放在了 utf-8 的数据库中,因为 MySQL 被设置为 utf-8?如果是这样,那么我的状态比我想象的要好。我发现切换到 htmlspecialchars 也摆脱了奇怪编码的撇号。
-
只是跟进,结果我有两个问题。一是字符显示不当。这是通过在我的输出中切换到 htmlspecialchars 解决的。第二,关于 utf-8 似乎如下: MySQL 在我没有意识到的情况下被设置为 utf-8,所以当我通过 web 表单输入文本时,它输入为 utf-8。我还使用 phpMyAdmin 将一些材料粘贴到数据库中,似乎这没有翻译成 utf-8,所以我在数据库中混合了 utf-8 和拉丁字符。我将继续将数据库和站点完全转换为 utf-8。谢谢大家。
标签: php mysql utf-8 character-encoding