我还在学习使用PHP& amp;我和MySQL知道我在设置字符集方面做错了什么,但是从这里和网上阅读我不应该知道我应该做些什么。

我有一个标准的LAMP安装,PHP 5,MySQL 5.我用默认值设置了一切。当我的一些用户向我们的数据库输入注释时,一些字符显示不正确 - 目前主要是撇号和短划线。在MySQL中,apostrostrophes显示为’。它们也以这种方式显示在页面上(我使用htmlentities输出用户注释)。

在phpMyAdmin中,它说我的MySQL Charset是UTF8-Unicode。

在我的数据库中,我的表都使用默认的Latin1-Swedish-ci进行设置。

我的网页都有meta http-equiv =" Content-Type"含量=" text / html的;字符集= UTF-8英寸

当我查看网站的http标题时,我看到:Content-Type:text / html

就像新手一样,在我的某些页面看起来很奇怪之前,我根本没有考虑字符集。因此,将所有内容转换为utf-8对我来说最有意义,这会影响我的PHP代码吗?或者我应该尝试将其全部拉入拉丁语?我是否必须进入数据库并替换这些奇数代码,或者在我正确设置字符集后它们会神奇地显示出来吗?到目前为止,我所做的所有小提琴都没有帮助(我将http标头设置为utf-8,并尝试了拉丁语)。

有帮助吗?

解决方案

http://www.phpwact.org/php/i18n/charsets

该网站给了我很多关于如何让所有东西在UTF-8中都很好的建议。

我还建议从htmlentities切换到htmlspecialchars,因为它更符合UTF。

重点是确保所有内容都说同一种语言。您的数据库,您的数据库连接,您的PHP,您的页面是在utf8(应该有一个元标记和标题,如此)。

其他提示

如果您真的想了解这些问题,我首先要阅读这篇文章在mysql.com 。基本上,您希望拼图的每个部分都期望UTF-8 unicode。在PHP方面,你想做类似的事情:

<?php header("Content-type: text/html; charset=utf-8");?>
<html>
  <head>
     <meta http-equiv="Content-type" value="text/html; charset=utf-8">

当您运行插入查询时,您希望确保表的字符编码您运行查询的编码都是UTF-8。您可以在运行插入查询之前运行查询 SET NAMES utf8 来完成后者。

很抱歉没有理解你的所有问题。但当问题的一部分是“UTF-8或不是?”时,答案是:“UTF-8,当然!”

你绝对想要现在而不是以后解决问题。最重要的编程规则之一就是不要继续使用一个坏主意 - 不要深入挖掘自己!

由于latin1和utf-8兼容,您可以将表转换为使用utf-8而无需操作手工包含的数据。 MySQL会为你排序这部分。

重要的是检查一切是否正在说utf-8。在apache中设置http标头或使用元标记 - 这表示HTML输出为utf-8的浏览器。

考虑到这一点,您需要确保您发送的所有数据都是utf-8!配置IDE以将php / html文件保存为utf-8。最后确保PHP使用与MySQL的utf-8连接 - 在连接后发出此查询:

SET NAMES 'utf-8';
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top