PHP 编码(猜猜UTF-8)

发布于 2024-10-02 06:13:57 字数 548 浏览 1 评论 0原文

我正在编写一个系统,以便用户可以编辑他发布的内容。简化后,它是一个存储在数据库中的文本区域/输入字段和一个检索它的页面。问题是,我认为编码不好,因为字符串存储在数据库中,如“é”或其他东西(phpmyadmin 视图)。

插入页面:

  1. 我插入 mysql_real_escape_string($_POST['field ']);

输出页面:

  1. 来自数据库的对象。
  2. htmlspecialchars($object->field);

但预期是: 输出页面:

  1. 来自数据库的对象。
  2. htmlentities($object->field);,对吧?

为什么MySql中的数据不能正确存储?

I'm programming a system so an user can edit what he posts. Simplified it's a textarea/input field which stores in a database and a page that retrieves it. The problem is, I think the encoding isn't okay, because strings are stored in the database like "é" or something (phpmyadmin view).

Insert page:

  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  2. I insert mysql_real_escape_string($_POST['field']);

Output page:

  1. Object from database.
  2. htmlspecialchars($object->field);

But expected is:
Output page:

  1. Object from database.
  2. htmlentities($object->field);, right?

Why isn't the data stored in MySql properly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

不必在意 2024-10-09 06:13:57

如果您的数据库编码设置为utf-8,则还需要将传输编码设置为utf-8。为此,您必须

SET NAMES utf8;

在插入表之前进行查询。

If your database encoding is set to utf-8, you need to set the tranfer encoding to utf-8, too. To do that you have to query

SET NAMES utf8;

before inserting into the table.

伴随着你 2024-10-09 06:13:57

数据库连接是UTF-8吗?请记住,这不是默认编码,您必须自己明确设置。

Is the database connection UTF-8 ? Bear in mind, that's not the default encoding, you have to explicitly set it yourself.

会发光的星星闪亮亮i 2024-10-09 06:13:57

你必须告诉 htmlentities 你给它提供的是 UTF-8:

htmlentities($text, ENT_COMPAT, "UTF-8");

否则它会假设它获得了 ISO-8859-1。

You have to tell htmlentities that you feed it UTF-8:

htmlentities($text, ENT_COMPAT, "UTF-8");

Otherwise it assumes it gets ISO-8859-1.

就此别过 2024-10-09 06:13:57

本网站 http://developer.loftdigital.com/blog/php-utf-8 -cheatsheet 应该可以让您了解 PHP 和 MySQL 中 UTF-8 需要什么。

哦,不要忘记在连接到数据库后使用这些:

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");

This site http://developer.loftdigital.com/blog/php-utf-8-cheatsheet should give you an idea of whats needed for UTF-8 in PHP and MySQL.

Oh and dont forget to use these after connecting to your DB:

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文