mysql数据库中文乱码怎么解决

等等,还有一件事。
上次我帮助我的同事修复了网站混乱的问题,这真的很令人沮丧。
显示明代建立时使用的是utf8 ,但查到的数据仍然是一堆乱七八糟的字符。
后来发现客户在连接过程中使用的加密设置不正确。
所以这件事应该分两步来做。

记得去年4 月在公司服务器上工作时,发现一个旧项目数据库的编码完全乱了。
查了半天,发现建库的时候用的是latin1 ,表里存了一些汉字。
更改编码的时候,我必须使用ALTER TABLE语句来一一更改,花了整整半天的时间。
最糟糕的是,有些存储过程是gbk编码的,所以你必须一一查找并替换它们。
当时就想如果建库建表的时候统一使用utf8 ,会省去多少麻烦。

现在想想,这就像做饭一样。
如果一开始选错了香料,以后无论怎么修正都会很麻烦。
比如你用gbk建表,存储UTF8 数据,那么查询的时候就会乱码。
这时候必须先SET NAMES utf8 再SELECT才能看到正确的内容。
最可气的是,有些应用层代码根本不考虑编码问题,就直接使用原生的gbk来读取数据库,结果自然是一团糟。

我突然想到,是不是有些DBA喜欢用latin1 ,并且认为它兼容性好?我以前在一家小公司工作,他们的旧数据库都使用Latin1 现在改变它们真的很糟糕。
但是,现在 utf8 应该是默认值。
至少阿里云文档推荐utf8 mb4 mb4 有什么作用?查看手册...哦,对了,它支持四字节unicode字符,比如表情符号。
我并没有太注意这一点,但是一旦我将表情符号保存到数据库中,它就显示为问号,这确实令人沮丧。

MySQL查询数据库表记录数

结论:对于MyISAM表直接检查table_rows,对于InnoDB表使用COUNT()。

语言:只需查看table_rows字段即可找出MyISAM表中的记录数。
在 InnoDB 表中,您必须同时对多个表进行计数。

专业用语:
table_rows:表中的记录数。

MyISAM:适合多读少写的MySQL数据存储引擎。

InnoDB:MySQL数据存储引擎,支持事务和行级锁定。

COUNT():统计表中记录数的SQL查询语句
要点:
MyISAM表查询速度快但准确度高。

InnoDB表必须执行COUNT(),这是低效的。

可以使用data_length/avg_row_length计算估计的记录数。

大表统计可以锁表,建议分时
经验:小表使用COUNT(),大表使用table_rows。

自己掂量一下。