Code前端首页关于Code前端联系我们

mysql数据库字符集问题,mysql字符集是什么意思

terry 2年前 (2023-09-30) 阅读数 41 #Mysql
文章标签 Mysql

本文内容列表:

  • 1、MySQL字符集问题。请告诉我如何解决它。
  • 2、如何更改mysql数据库的字符集
  • 3、MySQL中数据库的默认字符集和排序规则是什么?
  • 4.询问mysql字符集。
  • 5、如何更改mysql数据库的字符集
  • 6.MySQL字符集问题

mysql字符集问题。请告诉我如何解决它

编辑Liunx下的MySQL字符集:

1。找到MySQL cnf文件的位置

find / -iname'*.cnf' -print

/usr/share/mysql/my-innodb-heavy-4G.cnf

/usr/share/mysql /my-large.cnf

/usr/share/mysql/my-small.cnf

/usr/share/mysql/my-medium.cnf

/usr/share/mysql/my-huge 。 cnf

/usr/share/texmf/web2c/texmf.cnf

/usr/share/texmf/web2c/mktex.cnf

/usr /share/texmf/web2c/fmtutil.cn/ usr/share /texmf/tex/xmltex/xmltexfmtutil.cnf

/usr/share/texmf/tex/jadetex/jadefmtutil.cnf

/usr/share/doc/MySQL-server-community/2-5。 my-innodb-heavy-4G.cnf

/usr/share/doc/MySQL-server-community-5.1.22/my-large.cnf

/usr/share/doc/MySQL-server-community- 5.1.22/my-small.cnf

/usr/share/doc/MySQL-server-community-5.1.22/my-medium.cnf

/usr/share/doc/MySQL-server-community-5.1.22/my-huge.cnf

2。复制small.cnf、my-medium.cnf、my-huge.cnf、my-innodb-heavy-将4G.cnf之一移至/etc并命名为my.cnf

cp /usr/share/mysql /my -medium.cnf /etc/my.cnf

3。编辑my.cnf

vi /etc/my.cnf

在[client]下添加

default-character-set=utf8

并添加

default-f8-set=utf8

[mysqld] 下的 4。重新启动MySQL

[root@bogon ~]# /etc/rc.d/init.d/mysql restart

关闭MySQL [确定]

启动MySQL。 [OK]

[root@ bogon ~]# mysql -u root -p

输入密码:

欢迎来到 MySQL 屏幕。命令以 ; 结尾或 \g.

您的 MySQL 连接 ID 是 1

服务器版本:5.1。 22-rc-community-log MySQL 社区版 (GPL)

键入“help;”或“\h”寻求帮助。输入“\c”以清除缓冲区。

5.查看字符集设置

mysql 显示类似 'collat​​ion_%' 的变量;

+--------------------+-------- - ---- ----+

|变量名称 |价值|

+------------------------------------+----------------+

|集合连接 | utf8_general_ci | utf8_general_ci |

|馆藏数据库| utf8_general_ci |

|采集服务器| utf8_general_ci |

+--------------------------------+-------------------- ---- ------ +

集合中的 3 行(0.02 秒)

mysql 显示类似“character_set_%”的变量;

+---------------- --- ------- ------+-------------------------------- --+

|变量名称 |值 |

+--------------------------------+------------------------ ----- -----------+

|字符集客户端 | utf8 |

|字符集连接| utf8 |

|字符集数据库 | utf8 |

|字符集文件系统 |二进制 |

|字符集结果 | utf8 |

|字符集服务器 | utf8 |

|字符集系统| utf8 |

|字符集目录 | /usr/share/mysql/charsets/ |

+--------------------------------+--- --- --- --------------------+

8行一组(0.02秒)

mysql

其他一些设置方法:

修改数据库的字符集

mysqluse mydb

mysqlalter数据库mydb字符集utf-8;

创建数据库指定数据库的字符集

mysqlcreate数据库mydb字符集utf -8;配置文件更改:

编辑 /var/lib/mysql/mydb/db.opt

default-character-set=latin1

default-collat​​ion=latin1_swedish_ci❙er-default 为 set=utf8

default-collat​​ion=utf8_general_ci

重启MySQL:

[root@bogon ~]# /etc/rc.d/init.d/mysql restart

修改命令行:MyS 修改

mysql set character_set_client =utf8;

查询正常,0行受影响(0.00秒)

mysql set character_set_connection=utf8;

查询正常,0行0 p.0 p.0 p._set_database = utf8;

查询正常,影响 0 行(0.00 秒)

mysql set character_set_results=utf8;

查询正常,影响 0 行(0.00 秒)

mysql set character_set_mysql set;查询正常,影响 0 行(0.00 秒)

mysql set character_set_system=utf8;

查询正常,影响 0 行(0.01 秒)

mysql set collat​​ion_connection=受影响的查询,查询♝s。 (0.01 秒)

mysql set collat​​ion_database=utf8;

查询正常,0 行受影响(0.01 秒)

mysql set collat​​ion_server=utf8;

查询 0.1。 显示:

mysql显示变量如'character_set_%';

+----------------------------+--- - --------------------------+

|变量名称 |值 |

+--------------------------------+---------------- ---- -- -----+

|字符集客户端 | utf8 |

|字符集连接| utf8 |

|字符集数据库 | utf8 |

|字符集文件系统 |二进制 |

|字符集结果 | utf8 |

||字符集系统| utf8 |

|字符集目录 | /usr/share/mysql/charsets/ |

+----------------------------+-------- ------- ------------------+

集合中的 8 行(0.03 秒)

mysql 显示类似“collat​​ion_%”的变量;

+---- ------------------+-----------------+

|变量名称 |值 |

+--------------------------------+------------------------ ----- -+

|集合连接 | utf8_general_ci |

|馆藏数据库| utf8_general_ci |

|采集服务器| utf8_general_ci |

+-------------------------------- --+--------- ----- --+

3 行一组(0.04 秒)

希望对您有所帮助。满意的话请及时接手吧~

如何更改mysql数据库字符集

首先MySQL的字符集问题主要有两个概念,一个是Character Sets,一个是Collections。前者是字符内容

和编码,后者是对前者进行比较运算的一些规则。这两个参数集可以从数据库实例、单库、表、列等四个级别来指定。

对于用户来说,一般建议使用utf8编码来存储数据。解决乱码问题,不仅是MySQL数据的存储问题,还与用户程序文件的编码方式以及用户程序与MySQL数据库的连接方式有关。

首先,MySQL有一个默认字符集,它是在安装时确定的。编译MySQL时,可以通过DEFAULT_CHARSET=

utf8和DEFAULT_COLLATION=utf8_general_ci(MySQL 5.5版本、5.1版本使用--with-charset=

utf8 --with-collat​​ion=utf8_general_ci)两个参数用于指定默认字符集为utf8,这也是最常用的永久的。方法,指定这种方式后,

客户端连接数据库使用的编码方式也将默认为utf8,应用程序不需要任何处理。

然而遗憾的是,很多人在编译安装MySQL时并没有指定这两个参数,而大多通过二进制程序来安装。所以

目前MySQL的默认字符集是latin1。目前我们仍然可以通过my.cnf文件添加

两个参数来指定MySQL的默认字符集:

1。在[mysqld]版本下添加

default-character-set=utf8(mysql 5.5)版本添加character-set-server=utf8)

2。在[client]下添加

default-character-set=utf8

,这样我们建库建表时就不需要指定utf8字符集了。 。配置文件中的这种写法解决了数据存储和比较的问题

,但对客户端连接没有影响。此时,客户端一般应指定utf8连接方式,以避免出现乱码。这是传说中的设置名称命令。事实上,命令集名称utf8在服务器端对应如下命令:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = xutf8;

但这三个参数是不能写在配置文件my.cnf中。只能通过set命令动态改变。我们需要的是一个写在配置文件中的一劳永逸的方法。那么此时有没有办法解决服务器端的问题呢?一种可能的想法是将其放在 init_connect 中。当每个

普通用户连接时,该命令将触发执行。您可以在 [mysqld] 部分添加以下行来设置连接字符集:

在 [mysqld] 下添加:

init_connect = 'SET NAMES utf8'

总结:

1、编译安装MySQL时最好指定两个参数使用utf8编码。

2。另一种选择是在配置文件my.cnf或my.ini中设置两个参数,同时设置init_connect参数。

3。第三,在 my.cnf 或 my.ini 配置文件中设置两个参数,并为客户端连接指定 set names 命令。

4。在 my.cnf 配置文件中向客户端和服务器添加 default-character-set 参数,以便于管理。

MySQL中数据库的默认字符集和排序规则是什么?

1。 ASCII

用途:用于映射简单的单字节字符,如大小写英文字母、阿拉伯数字、常用标点字符、运算符、控制字符等。

编码范围:U+0000 - U +007F

注:对于使用该类型字符的场景来说已经足够了,但无法表达汉字、日文等编码。

2。 UNICODE

用途:用于映射包括 ASCII 在内的所有其他字符。

编码范围:U+0000 - U+10FFFF

注:ASCII 是 UNICODE 的子集,ASCII 编码的字符可以无损地转换为 UNICODE 编码的字符。

MySQL常用字符集

1. Latin1

Latin1 是 cp1252 或 ISO-8859-1 的别名。 ISO-8859-1 编码是单字节编码,并且向后兼容 ASCII。

编码范围:U+0000 - U+00FF

ISO-8859-1 除了 ASCII 记录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语和希伯来语对应的字符。文字符号。

单个字节内的空间被ISO-8859-1编码占用,因此ISO-8859-1编码可以用于存储和传输任何其他编码字节流。

比如用Latin1保存Utf8mb4编码或者GBK编码都没有问题。因为Latin1保留了原始的字节流,所以MySQL长期使用Latin1作为默认字符集。

但是,由于Latin1存储的是任意字符的字节流,所以造成了字符数的浪费。

例如:

CHAR(10) 字符集 LATIN1;CHAR(10) 字符集 UTF8;

这个UTF8字段存储的字符数是Latin1的三倍! ! !

2。 GB18030

GB18030是中国官方标准字符集,向前兼容GBK和GB2312,并且是这两个的超集。分别用1、2、4字节来表示一个符号。对于一般的汉字,默认是以二字节编码存储的。对于Windows系统,默认使用GB18030。

如果只存储汉字,GB18030是最好的。

原因有两个:

1)占用空间少,比如比UTF8小。

2)存储的汉字按拼音排序,方便快速检索。

3。 UTF8

UTF8是Unicode的编码实现,可以存储任何与UNICODE编码对应的字符。这也是最常用的编码。最大的特点是变长编码方式,用1到4个字节来表示一个符号,字节长度可以根据不同的符号进行编码。

字母或数字使用 1 个字节,汉字使用 3 个字节,表情符号使用 4 个字节。目前使用最广泛的是UTF8字符集。

注意! MySQL中经常提到的UTF8是UTF8MB3的别名。 UTF8MB3是UTF8MB4的子集,UTF8MB4才是真正的4字节UTF8字符集!

UTF8MB3表示最多支持3个字节的字符,UTF8MB4表示最多支持4个字节的字符。基于实际需求和未来前景,MySQL 8.0已经默认使用UTF8MB4基本字符集。

询问mysql中的字符集。

与MySQL字符集相关的有:

1。数据库中的字符集

2。文本字段中的字符集(varchar、text、char)

您指的是哪一个?

下面的例子使用utf8作为字符集(注意是utf8,不是utf-8)

建库时指定字符集:创建数据库XXXX字符集utf8

时的字符集指定建库时建表。不需要指定字符集,默认会继承数据库字符集。

如果创建表时要指定字符集:create table XXXX ( xxxxxxx ) type=MyISAM 标准字符集 utf8

create table XXXX (aa varchar(8) charset utf8, bb char(4) charset utf8) type=MyISAM default charset utf8;

当读取时设置utf8为字符集时,尤其是使用网页作为输出时接受来自网站的数据,您必须注意:

1。请将网页的编码设置为utf-8(请注意是utf-8而不是utf8)

2。进行数据库操作之前请执行SQL:设置名称为utf8,然后运行其他SQL语句

上面的想法是:尽量保持所有操作都使用相同的编码。

如何更改mysql数据库的字符集

1、重启mysql服务,服务mysql-restart

使用mysql SHOW VARIABLES LIKE 'character%';检查一下,发现数据库编码已经改为utf8

+------------------------+------------------------ -- - -- ----------+ |变量名称 |价值| +------------------------+-------------------- --- -- -----+ |字符集客户端 | UTF8 | |字符集连接| UTF8 | |字符集数据库 | UTF8 | |字符集文件系统 |二进制| |字符集结果 | UTF8 | |字符集服务器 | UTF8 | |字符集系统| UTF8 | |字符集目录 | D:"mysql-5.0.37"共享"字符集" | +--------------------------------+------------------------------------ --- --------+

(2)还有一种方法可以改变mysql的默认字符集,就是使用mysql命令

mysql SET character_set_client = utf8; mysql 设置character_set_connection = utf8; mysql 设置字符集数据库 = utf8; mysql 设置character_set_results = utf8; mysql 设置字符集服务器 = utf8 ; mysql 设置 collat​​ion_connection = utf8; mysql SET collat​​ion_database = utf8; mysql 设置 collat​​ion_server = utf8;

一般来说,即使你将MySQL的表默认字符集设置为utf8,并通过UTF-8编码来传递查询,你也会发现数据库中存储的数据仍然是乱码。问题就出在这个连接层。解决方案是在发送查询之前执行以下语句:

SET NAMES 'utf8';

对应以下三个指令:

SET character_set_client = utf8;设置字符集结果=utf8; SET character_set_connection = utf8;

MySQL字符集问题

尝试一下。 Servers下的server.xml中有一个连接,添加URIEncoding="utf-8"

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门