gpt4 book ai didi

php - Windows 上 MySQL 命令行中的非英文字符

转载 作者:可可西里 更新时间:2023-11-01 11:26:01 27 4
gpt4 key购买 nike

表是用以下方法创建的:

 CREATE TABLE IF NOT EXISTS `mathsqs` (
`questions` varchar(5000) NOT NULL,
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

我已经使用 mysqli 通过 PHP 插入数据。
为了确认插入,我在 Windows 命令行上尝试了 SELECT * FROM mathsqs LIMIT 1。它显示非英文字符的问号。

如何在 MySql 命令行中查看准确的发布数据?

我尝试处理的示例数据:

இரு எண்களின் பெருக்கல் பலன் 3375 அவ்வெண்களின் மீ.பெ.வ 15

最佳答案

假设您已经将表字符集设置为 utf8,并且它的排序规则是 utf8。

尝试在 $mysqli 命令之前添加这一行:

$mysqli->set_charset("utf8")

此外,在您的页眉中设置此输出所在的 utf 8 编码。

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

更新:

从命令行运行 sql 时,请确保在启动 mysql 客户端之前设置了默认字符集属性。像这样的东西:

使用 --default-character-set=utf8 选项启动客户端。

mysql --default-character-set=utf8

要将其设置为每次运行 mysql 客户端时自动包含的默认选项,请在 my.cnf 文件的 [mysql] 部分中添加一个条目:

[mysql]
default-character-set=utf8

更新#2:

@GopsAB 我运行了 DML 语句来创建您指定的表。遵循相同的过程,令人惊讶的是,我遇到了同样的问题。我无法弄清楚为什么即使在执行字符编码后仍会显示问号。

所以我进一步挖掘并确保命令提示符设置为使用“Lucidia Console”字体和事件页面代码 chcp 65001,通过将控制台的属性设置为使用“Lucidia Console”字体然后运行:chcp 65001 并遵循相同的过程。

但现在不是'?'标记 我正在获取 BOM 字符框....但令人惊讶的是,当我复制为列值显示的控制台文本时,我得到了正确的文本:போக்குவரத்து(这是直接从控制台粘贴)。奇怪哈!

重要!

事实证明,MySQL 的 utf8 字符集仅部分实现了正确的 UTF-8 编码。它只能存储由一到三个字节组成的 UTF-8 编码符号;不支持占用四个字节的编码符号。

在您的情况下,字符被完美存储,并且可以在 php 页面和 mysql 编辑器(如 sql workbench 或 Toad for SQL)中正确检索它们。即使在如上所述设置了正确的编码和页面类型之后,由于某些奇怪的原因,只有命令行界面无法显示它们。复制/粘贴时显示在控制台中的文本在记事本或您可以键入的任何其他地方正确显示。

运行 SET NAMES 'big5';SET NAMES 'utf8'; 也没有任何效果

SET collat​​ion_connection = utf8_unicode_ci; 也没有SET NAMES utf8; 做了任何新的事情,但只显示框,这是复制/粘贴时的实际值,但在控制台上本身被框遮住了。

所以直到这里你都很好!您的 SQL 中没有任何问题,并且存储在数据库中的值没有问题并且可以正确获取。

Something Extra:

MySQL 的 utf8mb4

幸运的是,MySQL 5.5.3(2010 年初发布)引入了一种名为 utf8mb4 的新编码,它映射到正确的 UTF-8,因此完全支持 Unicode,包括星体符号。

从 MySQL 的 utf8 切换到 utf8mb4

对于每个数据库:

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

对于每个表:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

对于每一列:

ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;(不要盲目复制粘贴!具体的语句取决于列类型、最大长度和其他属性。上面这行只是 VARCHAR 列的示例。)

MySQL 的 utf8mb4 引用: How to support full Unicode in MySQL databases

关于php - Windows 上 MySQL 命令行中的非英文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36147201/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com