提问者:小点点

MySQL查询中未显示用户名?


我已经创建了users表。

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255),
  `email` varchar(255),
  `hashed_password` varchar(255) NOT NULL,
  `user_avator` varchar(2000) NOT NUL,
  `avator_type` VARCHAR(10) DEFAULT 'monsterid',
  `date` DATE NOT NULL,
  `time` TIME NOT NULL,
  PRIMARY KEY (`id`)
);

然后我创建了一个新的帐户前端网页。
我给出了:
用户名:°
帐户创建成功。
现在我可以通过我的用户名和密码登录。然后我可以清楚地看到我的用户名为°在网页。

但当我在终端中运行sql查询时:
从用户中选择用户名;
我得到的输出是:

+------------------------------------------------------------------------------------+
| username                                                                           |
+-----------------------------------Ê                                              |-+
+------------------------------------------------------------------------------------+

我无法看到我的用户名为°。但我可以通过网页登录。
为什么我不能在查询输出中看到我的用户名?

有些用户说我的终端编码有问题。

为了测试这一点,我运行echo'°'
输出为°
所以我想终端中的编码没有问题。


共1个答案

匿名用户

您应该看看编码。

用户名°可能使用错误的编码方案存储在数据库中。这就是为什么使用更简单字符的用户名可以工作的原因。

当您将用户名插入数据库时,它将转换为配置的编码(如果需要)。然后,在显示在web上之前,将其转换为“原始”编码(如果需要)。例如:如果将字符ã和从UTF-8转换为iso-8859-1,则结果为::。现在,如果您将:从iso-8859-1转换为UTF-8,结果是:ã

要解决用户名问题,请确保正确配置了用户名列的编码,并且显示用户名的终端也正确配置了编码。

请注意,终端上未正确显示用户名并不一定是一个问题。正如您所说的,它在web上正常工作,因此终端只是没有以您期望的编码显示用户名。