Linux下MySQL中文乱码的问题

发布于 2021-11-23 05:31:41 字数 7061 浏览 800 评论 10

我使用的是树莓派,源于Debian的

mysql的字符集设置如下

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+



当前数据库字符集

mysql> show create database attic_db;
+----------+-------------------------------------------------------------------+
| Database | Create Database                                                   |
+----------+-------------------------------------------------------------------+
| attic_db | CREATE DATABASE `attic_db` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.01 sec)

表字符集

mysql> show create table video;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| video | CREATE TABLE `video` (
  `vid` int(11) NOT NULL AUTO_INCREMENT,
  `chinesename` text CHARACTER SET latin1,
  `englishname` text CHARACTER SET latin1,
  `tag` text CHARACTER SET latin1,
  `timelength` time DEFAULT NULL,
  `size` int(11) DEFAULT NULL,
  `path` text CHARACTER SET latin1,
  `total` int(11) DEFAULT NULL,
  `filmmaker` text CHARACTER SET latin1,
  `actor` text CHARACTER SET latin1,
  `country` text CHARACTER SET latin1,
  `language` text CHARACTER SET latin1,
  `type` varchar(20) CHARACTER SET latin1 DEFAULT NULL,
  `premiered` timestamp NULL DEFAULT NULL,
  `imdbcode` varchar(50) CHARACTER SET latin1 DEFAULT NULL,
  `approve` int(11) DEFAULT NULL,
  `object` int(11) DEFAULT NULL,
  `showpicpath` text CHARACTER SET latin1,
  `uploadtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`vid`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+



使用navicat for mysql 勾选使用MySQL字符集  65001(UTF-8)

插入中文件,navicat中显示为乱码,mysql查询也是乱码,设置set names utf8,依然是乱码。

使用命令update修改字段内容为中文,仍为乱码

mysql>  update video set chinesename="中文名" where vid=1;
Query OK, 1 row affected, 1 warning (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> select chinesename from video where vid=1;
+-------------+
| chinesename |
+-------------+
| ???         |
+-------------+



以上都是utf8编码,所以我不知道哪里忽略了,还有一个问题,我不清楚系统的字符集会不会影响到mysql

root@Attic:~# locale -a
C
C.UTF-8
en_GB.utf8
POSIX



但是可以创建以中文命名的文件,不会乱码。

谁有好的解决方法吗,多谢分享。




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

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

发布评论

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

评论(10

孤独患者 2021-11-28 09:18:00

已经设置过了,是按照上面“如何修复”后面的链接操作的

悲喜皆因你 2021-11-28 09:16:19

回复
`chinesename` text CHARACTER SET latin1, -- 看下你的表结构

静谧 2021-11-28 09:14:13

回复
就是上面那个图

梅窗月明清似水 2021-11-28 09:06:47

回复
让你自己检查下 表结构中的character.....

如此安好 2021-11-28 08:57:16

回复
上面的图很清楚,我也圈出来了,就这字段character的问题,已经改过了。

虐人心 2021-11-28 08:21:35
set character_set_filesystem = utf8

成熟稳重的好男人 2021-11-28 08:11:25

putty的重点编码设置是在终端那里,不是设置这个环境变量的。而且你这个zh_CN.UTF-8在远程的服务器也没有这个字符集

醉酒的小男人 2021-11-28 04:51:56

引用来自“Feng_Yu”的评论

这个问题像是你的终端字符集不是utf8编码。如果是第三方终端,确认你的终端编码设置为utf8.

如果是Linux下的终端远程连接,确认远程服务器的终端编码有utf8编码,并且已经启用。

locale看一下编码,locale -a只是看本地所有可用编码而已

孤独患者 2021-11-26 05:00:29

这个问题像是你的终端字符集不是utf8编码。如果是第三方终端,确认你的终端编码设置为utf8.

如果是Linux下的终端远程连接,确认远程服务器的终端编码有utf8编码,并且已经启用。

locale看一下编码,locale -a只是看本地所有可用编码而已

飘过的浮云 2021-11-24 05:03:35

引用来自“Feng_Yu”的评论

这个问题像是你的终端字符集不是utf8编码。如果是第三方终端,确认你的终端编码设置为utf8.

如果是Linux下的终端远程连接,确认远程服务器的终端编码有utf8编码,并且已经启用。

locale看一下编码,locale -a只是看本地所有可用编码而已

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