先讲一下写该文章的原因,首先,工作中又遇到一条很熟悉的MySQL报错信息 Cause: java.sql.SQLException: Incorrect string value:Cause: java.sql.SQLException: Incorrect string value… (emoji表情存储导致),原因是MySQL的字符集导致的;其次,因为一直听说数据库变更可能锁表,但是一直不知道到底哪些操作会导致锁表。所以今天对相关知识做一个系统的整理。
不是真正的修改数据库的编码格式 是设定当前数据库数据,显示的编码格式 不修改数据库原始的编码格式
今天在写一个项目的时候,在数据库中手动插入数据不会产生中文乱码,但是通过javaWeb却出现乱码,把提交表单和响应中的乱码问题解决后,还是乱码。所以我锁定一定是我的mysql数据库中出现了乱码的现象。
图中的数据库是MySQL8.0自带的数据库。这四个数据库对于不是DBA的人而言,我们就不要去动它。创建自己的数据库即可。
MySQL中,数据库的编码是一个相当重要的问题,有时候我们需要查看一下当前数据库的编码,甚至需要修改一下数据库编码。
MySQL 是最常用的数据库,在数据库操作中,基本都是增删改查操作,简称CRUD。
这里我已经将MySQL的数据库编码设置为UTF-8,所以下面现实的都是UTF-8。
1.5 数据库的操作 1.5.1 创建数据库 语法: create database [if not exists] 数据名 [选项] 例题 -- 创建数据库 mysql> create database stu; Query OK, 1 row affected (0.06 sec) -- 创建数据库时,如果数据库已经存在就要报错 mysql> create database stu; # ERROR 1007 (HY000): Can't create database 'stu'; databa
€ (euro) 标记 是一个 3 字节字符,在 (UTF-8)中这个字符被表示为 0xE2, 0x82, 0xAC。
‘[]’ 的内容表示可选项,可以选择也可以不选择。而 数据库本质上是目录文件。
当我们创建数据没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则:utf_general_ci;
在Java控制台输出中文时,如果控制台默认编码与Java程序的编码不一致,就可能出现乱码。这种情况通常发生在Windows系统的cmd命令行窗口中,因为cmd的默认编码可能是GBK,而Java程序可能使用的是UTF-8编码。
一、登录数据库 (1) 简单模式 C:\Users\xlg>mysql -uroot -p Enter password: ****** (2) 标准模式 C:\Users\xlg>mysql -h127.0.0.1 -uroot -p mysql -hlocalhost -uroot -p mysql -h10.0.110.238 -uroot -p Enter password: ****** 参数所代表的含义: h:host 主机(localhost IPV4 127.0.0.1) 注意: roo
如何修改mysql数据库编码 修改字符集的方法,就是使用mysql的命令 mysql> SET character_set_client = utf8 ; mysql> SET character_set_connection = utf8 ; 使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8 +--------------------------+---------------------------------+ | Variable_name | &#118alue | +--------------------------+---------------------------------+ | 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 | D:"mysql-5.0.37"share"charsets" | +--------------------------+---------------------------------+
MySQL编码 1.查看数据库编码格式 show create database <数据库名>;
今天在设计开源项目的反馈信息表时遇到了emoji表情插入失败的问题,网上找了很多解决方案,答案五花八门,没找到好使的。
今天在爬取文章的时候,在将数据插入mysql数据库的时候,出现了Incorrect string value: '\xF0\x9F\x98\xAD",...' for column 'commentContent' at row 1 这个错误,Google了下发现原来是因为数据库编码问题导致的,原因在于我们的评论数据中存在emoj表情,而这些表情是按照四个字节一个单位进行编码的,而我们通常使用的utf-8编码在mysql数据库中默认是按照3个字节一个单位进行编码的,正是这个原因导致将数据存入mysql数据库的时候出现错误,那么这个问题我们应该怎么解决呢?
set character_set_client = gbk; -- 来自客户端的语句的字符集。服务器使用character_set_client变量作为客户端发送的查询中使用的字符集。
在文章开始前,大家可以先考虑几个问题,这样方便更快理解文章的知识点,下面的问题都会在文章中找到答案哦!
###1 MySQL登录与退出 MySQL登陆 MySQL 参数(在cmd命令框中输入) 登陆MySql mysql -uroot -p -P3306 -h127.0.0.1 MySql退出
这个问题是由于数据库的编码方式引起的,首先我们来了解一下utf8和utf8mb4的区别:
当向 MySQL 数据库插入一条带有中文的数据形如 insert into employee values(null,'小明','female','2018-03-28','2018-03-29','Sales',2018,'从事互联网工作!'); 出现乱码时,可以使用语句 show variables like 'character%'; 来查看当前数据库的相关编码集。
大部分情况下,数据库的连接,数据库本身、数据库的服务器都是utf8的。在最开始的my.cnf配置中,我们把默认字符集全部配成了utf8进行统一,如果不配置,可能就会因为编码的不同导致无法正确解析数据。
Oracle PLSQL导入数据 在PLSQL中导入数据时,对于数据量比较大的insert的SQL文件,不要使用import table进行数据导入,会导致导入数据失败,不能完整导入所有数据. 应在在Command窗口中使用命令导入: sql>@D:/test.sql; Oracle编码查看与修改 当数据库中的数据中文出现乱码的情况时,原因可能时数据的编码与Oracle数据库的编码不一致. 查看Oracle数据库的编码: SQL> select * from nls_instance_parameters
针对已经存在的 Confluence 安装,如果你安装的 Confluence 版本是 6.4 或者早期的版本,我们在安装的时候没有检查你数据库的字符设置。
Confluence 和你的数据库必须配置使用相同的字符集。为了避免字符出现问题,请将所有的字符集设置为使用 UTF-8 编码(或者根据你配置的数据库来制定正确的 UTF-8 编码字符集,例如在 Oracle 中使用的是 AL32UTF8 )。
说明最近实在不知道该写些啥了,由于主题的自带表情还是较为缺少,于是我自己添加了一些表情,所以在此分享一下表情添加方...
1、修改数据库字符编码 mysql> alter database mydb character set utf8 ; 2、创建数据库时,指定数据库的字符编码 mysql> create database mydb character set utf8 ; 3、查看mysql数据库的字符编码 mysql> show variables like 'character%'; //查询当前mysql数据库的所有属性的字符编码 +--------------------------+---------------
注: 在同一个数据库服务器上必须是唯一的,不允许存在同名的数据库。 此外在创建数据库时如果不进行自定义设置编码方式,就会使用系统默认的编码方式,所以我们可以在创建数据库的同时自定义设置编码方式。 语法:
[ ] 中的关键字可以选择不加,IF NOT EXISTS 的意思是如果不存在才创建 数据库
mysql 创建数据库时指定编码很重要,很多开发者都使用了默认编码,乱码问题可是防不胜防。制定数据库的编码可以很大程度上避免倒入导出带来的乱码问题。 网页数据一般采用UTF8编码,而数据库默认为latin 。我们可以通过修改数据库默认编码方式为UTF8来减少数据库创建时的设置,也能最大限度的避免因粗心造成的乱码问题。 我们遵循的标准是,数据库,表,字段和页面或文本的编码要统一起来 我们可以通过命令查看数据库当前编码:mysql> SHOW VARIABLES LIKE 'character%'; 发现很多对应的都是 latin1,我们的目标就是在下次使用此命令时latin1能被UTF8取代。 第一阶段: mysql设置编码命令
MySQL> create database name character set utf8;
在程序开发中,有时会被字符乱码的问题所困扰。对此,必须理解 MySQL 的字符集编码设置的原理:在MySQL中,默认使用的是lartin1,也就是ISO8859-1字符集编码。这是一种8位的编码,适用于所有西欧字符。而对于汉字等是不合适的。最好、最通用的编码格式是utf-8,UTF-8(8 位元 Universal Character Set/Unicode Transformation Format)是一种针对Unicode 的可变长度字节编码的Unicode字符集。它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。所以对于8位的西欧字符集来说,更能比较节省空间,而又能够有效地表示汉字等字符。MySQL服务器对字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和连接级。
从零开始学Mysql - 字符集和编码(上) 前言 上一节我们系统的阐述了关于系统配置的相关细节内容,而这一节我们需要了解关于字符集和编码的内容,字符集和编码的规则其实也算是入门mysql经常遇到的
mysql是我们项目中非常常用的数据型数据库。但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况。下面就来介绍一下如何彻底解决数据库中文乱码情况。
如果出现了中文乱码,我们只要看: character_set_client —客户端的编码 character_set_connection —连接的编码(传输时的编码) character_set_results — 最后的输出编码
语法:CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]
启动/关闭 启动(以管理员模式运行命令行) net start mysql 关闭(以管理员模式运行命令行) net stop mysql 登录/退出 登录 mysql -u"用户名" -p"密码" 登录格式二 mysql -h"ip地址" -u"用户名" -p"密码" 退出 exit 图形化界面 Navicat SQLyog 当然,我个人是不建议使用SQLyog的,推荐使用Navicat,因为Navicat真的很强大 SQL语句分类 什么是SQL语句 结构化查询语言(Structured Query La
一般我们数据编码格式默认设置为utf-8, 但是utf-8并不支持表情,而表情需要utf8mb4字段(向下兼容utf-8)
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。 字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。 字符编码(Character encoding)是把字符集中的某个字符编码为指定字符集中字符,以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成ASCII,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示。 字符序(collation)是指同一个字符集内字符之间的比较规则。只有确定字符序后,才能在一个字符集上定义什么是等价的字符,以及字符之间的大小关系。一个字符可以包含多种字符序。MySQL字符序命名规则是:以字符序对应的字符集名称开头,以国家名居中(或以general居中),以ci、cs、或bin结尾。以ci结尾的字符序表示大小写不敏感,以cs结尾的字符序表示大小写敏感,以bin结尾的字符序表示按二进制编码值比较。
在javaweb开发中,会出现一种很奇怪的事就是中文内容写入数据库就乱码了- -,可以根据以下几点进行排查解决:
在最最初配置 MySQL 数据库的时候,就设置成 UTF-8 的编码 sudo vim /etc/my.cnf [3hzjs83bsi.png] 然后在 metastore 库生成后,如果直接用 hive 创建库或表就会报错,Specified key was too long; max key length is 767 bytes,是因为此时的 metastore 库的编码是UTF-8,这时我们把 metastore 的编码修改为 latin1,然后重启 MySQL 数据库,就OK了,使用 hive 创
昨天安装了MySQL数据库,也就是说我这台电脑理论上是可以作为数据库服务器的,用户可以连接这台电脑中的数据库。
常用的编码格式为:ASCII Unicode-8 Unicode-16 Unicode-32 GB2312 等 ,
alter database 数据库名字 default character set 编码格式 collate 编码格式_in
领取专属 10元无门槛券
手把手带您无忧上云