非英文字符在我的 php 页面上显示为问号 - 在数据库中显示正常

发布于 2024-09-16 03:21:19 字数 159 浏览 5 评论 0原文

我有一个 MySQL 数据库表,其中填充了非英语数据。当我在 Navicat MySQL 浏览器中查看数据时,数据显示正常。但是,当我运行 php 脚本来选择并在网页上显示数据时,它会显示问号。页面编码设置为 utf8,甚至 MySQL 排序规则也设置为 utf8 - 选择和显示时出现错误...请帮助。

I have a MySQL database table populated with non English data. When I view the data in Navicat MySQL browser the data appears fine. However when I run a php script to select and display the data on a web page it displays question marks instead. The page encoding is set to utf8 and even the MySQL collation is set to utf8 - something gets wrong in selecting and displaying... please help.

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

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

发布评论

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

评论(2

孤君无依 2024-09-23 03:21:19

MySQL 连接设置可能有问题。从 PHP 连接到数据库时,在运行任何其他 SQL 命令之前运行此 MySQL 命令:

SET names 'utf8';

这应该将连接的编码设置为 UTF-8。正如您所说,页面和数据库已经采用 UTF-8 格式(这也意味着页面发送 Content-Type: text/html; charset=utf-8);默认情况下,连接本身可能会意外地具有不同的编码:(

MySQL connection settings could be at fault here. Run this MySQL command when you connect to the database from PHP, before you run any other SQL commands:

SET names 'utf8';

This should set the connection's encoding to UTF-8. As you're saying, the page and the database is already in UTF-8 (that should also mean the page sends Content-Type: text/html; charset=utf-8); the connection itself can accidentaly have a different encoding by default :(

梦亿 2024-09-23 03:21:19

另外,在HTML中,里面我们必须这样写:

<meta charset="utf-8">

当我们创建MySQL数据库时,我们必须使用这样的内容:

CREATE DATABASE `base` DEFAULT CHARACTER SET=utf8;

当我们创建表时,使用:

CREATE TABLE `base`.`table` (
`key` int(5) unsigned NOT NULL,
`name` varchar(100),
...
PRIMARY KEY (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

在PHP代码中,在mysql_connect()和mysql_select_db()之后,使用:

mysql_query('SET NAMES UTF8');

In addition, in HTML, inside we must write:

<meta charset="utf-8">

When we create a MySQL database, we must use something like this:

CREATE DATABASE `base` DEFAULT CHARACTER SET=utf8;

When we create tables, use:

CREATE TABLE `base`.`table` (
`key` int(5) unsigned NOT NULL,
`name` varchar(100),
...
PRIMARY KEY (`key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

In PHP code, after mysql_connect() and mysql_select_db(), use:

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