mysql是我们项目中非常常用的数据型数据库。但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况。下面就来介绍一下如何彻底解决数据库中文乱码情况。
我们需要更改改动mysql配置文件/etc/my.cnf并加入如下的参数。(Linux环境下)
由于MySQL编码原因会导致数据库出现乱码。 解决办法:修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家需要用到的字符,是国际编码。
参考原文教程:Centos7下修改mysql5.6编码方式 解决网站中文显示问号 解决办法: 修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家需要用到的字符,是国际编码。 具体
以下以UTF-8配置。注意,这是针对XWiki1.0 b5或更高版本。即将发布的版本将提供更容易的配置。
本文实例讲述了centos7.2.1511安装jdk1.8.0_151及mysql5.6.38的方法。分享给大家供大家参考,具体如下:
a. 查看是否安装有mysql:yum list installed mysql*, 如果有先卸载掉, 然后在进行安装;
字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。 字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。 字符编码(Character encoding)是把字符集中的某个字符编码为指定字符集中字符,以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成ASCII,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示。 字符序(collation)是指同一个字符集内字符之间的比较规则。只有确定字符序后,才能在一个字符集上定义什么是等价的字符,以及字符之间的大小关系。一个字符可以包含多种字符序。MySQL字符序命名规则是:以字符序对应的字符集名称开头,以国家名居中(或以general居中),以ci、cs、或bin结尾。以ci结尾的字符序表示大小写不敏感,以cs结尾的字符序表示大小写敏感,以bin结尾的字符序表示按二进制编码值比较。
首先到github上面下载源码,下载完成后放到站点根目录/var/www/html新建三个数据库
全局变量用global来修饰,而会话变量用session,通常session可以省略。
一、系统环境 yum update升级以后的系统版本为 [root@yl-web yl]# cat /etc/redhat-release CentOS Linux release 7.1.1503 (Core) 二、mysql安装 一般网上给出的资料都是 #yum install mysql #yum install mysql-server #yum install mysql-devel 安装mysql和mysql-devel都成功,但是安装mysql-server失败,如下: [root@yl
utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符。
上一篇讲到字符、字符集、字符编码,粗略的一笔带过MySQL的编码,本篇想要讲讲字符编码在MySQL数据库中的应用。不仅仅是本篇文章,其他博主的文章也是,多多阅读他人的好文,才可以提升自己的水平。再次借用六一居士写的《卖油翁》来激励大家,多多阅读。
这个值后面对应的utf8_unicode_ci是什么意思呢?面试的时候用这个题目考一考DBA,应该可以难倒一大部分人。
先讲一下写该文章的原因,首先,工作中又遇到一条很熟悉的MySQL报错信息 Cause: java.sql.SQLException: Incorrect string value:Cause: java.sql.SQLException: Incorrect string value… (emoji表情存储导致),原因是MySQL的字符集导致的;其次,因为一直听说数据库变更可能锁表,但是一直不知道到底哪些操作会导致锁表。所以今天对相关知识做一个系统的整理。
1、Ubuntu安装:sda会覆盖MBR,选择这个,sda1会导致找不到系统 2、配置路由 在/etc/rc.local 开机时候自动加载 sudo iptables -F //清除所有规则 sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -t nat POSTROUTING -o eth1 -j MASQUERADE 具体内容忘记了 eth1 为 wan口网卡
1、修改数据库字符编码 mysql> alter database mydb character set utf8 ; 2、创建数据库时,指定数据库的字符编码 mysql> create database mydb character set utf8 ; 3、查看mysql数据库的字符编码 mysql> show variables like 'character%'; //查询当前mysql数据库的所有属性的字符编码 +--------------------------+---------------
1. MySQL的版本 utf8mb4的最低mysql版本支持版本为5.5.3+,若不是,请升级到较新版本。 2.修改MySQL配置文件 修改mysql配置文件my.cnf(windows为my.ini) my.cnf一般在etc/mysql/my.cnf位置。找到后请在以下三部分里添加如下内容: [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' 3. 重启数据库,检查变量 SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%'; Variable_name Value character_set_client utf8mb4 character_set_connection utf8mb4 character_set_database utf8mb4 character_set_filesystem binary character_set_results utf8mb4 character_set_server utf8mb4 character_set_system utf8 collation_connection utf8mb4_unicode_ci collation_database utf8mb4_unicode_ci collation_server utf8mb4_unicode_ci collation_connection 、collation_database 、collation_server是什么没关系。 但必须保证这几个变量必须是utf8mb4。 系统变量 描述 character_set_client (客户端来源数据使用的字符集) character_set_connection (连接层字符集) character_set_database (当前选中数据库的默认字符集) character_set_results (查询结果字符集) character_set_server (默认的内部操作字符集) ———————————————————— 到这里为止,上面都是服务器环境方面配置调整 ———————————————————— 4. 将数据库、表、列三个同时也转换成utf8mb4 更改数据库编码:ALTER DATAbase alfredsw CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 更改表编码:ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 更改列编码:在需要存储的字段进行更改 [注意:数据库和表编码可以不更改,不影响使用] 5、服务器连接排序规则:utf8mb4_general_ci 6、最关键的,thinkphp5的配置要修改 'charset' =>'utf8mb4',// 数据库编码默认采用utf8
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
前言 什么是字符编码,为什么会乱码? https://zh.wikipedia.org/wiki/%E5%AD%97%E7%AC%A6%E7%BC%96%E7%A0%81 mysql database字符编码默认是latin1,并不支持中文 本篇文章解决办法适用范围? Linux下的mysql 5.6+版本 其他版本未尝试过,不敢保证可行 解决步骤 查看mysql目前字符编码 #登录mysql mysql -u rrot -p #在mysql中查询字符编码设置 mysql> show variables
这里我已经将MySQL的数据库编码设置为UTF-8,所以下面现实的都是UTF-8。
Unicode是编码字符集,而UTF-8就是字符编码,即Unicode规则字库的一种实现形式。随着互联网的发展,对同一字库集的要求越来越迫切,Unicode标准也就自然而然的出现。它几乎涵盖了各个国家语言可能出现的符号和文字,并将为他们编号。
数据库配置文件为:/etc/my.cnf和/etc/my.cnf.d目录下的配置文件
前一段时间 ,我们完成了 Java 集合与数据结构的学习 , 之后我们将进入 Mysql 数据库的课程中。
macOS下的Homebrew就相当于CentOS下的yum或者是Ubuntu下的apt-get
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
“数据库的数据变成乱码了!”---想必不少 DBA 们对类似的“呼救”不算太陌生。一般来说这类问题都是字符集的设置有关,同时在 MySQL 中也存在“错入错出”的这种“神话”:登录到数据库看的时候是乱码,代码/WEB 上显示的是正常的。
常用的编码格式为:ASCII Unicode-8 Unicode-16 Unicode-32 GB2312 等 ,
SQL 是由关键字组成的语言,关键字是一些用于执行 SQL 操作的特殊词汇。在命名数据库、表、列和其他数据库对象时,一定不要使用这些关键字。因此,这些关键字是一定要保留的。
那么,对于乱码这个看似不起眼,但并不是一两话能讲清楚的问题,是很有必要从根源了解字符集和编码原理,知其然知其所以然显然是一个优秀码农的基本素养,所以,便有了本文,希望能帮助到你。
目录遍历又称"路径遍历",由于web服务器配置错误导致网站的目录暴露可以被随意浏览,这种被称为"目录遍历"
查看当前字符集编码 [root@localhost ~]# mysql -uroot -p123qqq...A ... mysql> show variables like '%char%'; +--------------------------------------+----------------------------+ | Variable_name | Value | +------------------
公司购买了企业邮局给员工提供邮件服务,这样收发外部邮件都没有问题,但有个非常不好的地方,绝大多数邮件都是在内部互相之间转发的 ,结果就导致一个问题,不管这个邮件是不是发给内部的, 邮件都得到外部邮件服务器上转一圈,如果邮件小还好说,有时候数MB的附件,一发一收都得占不少网络资源,一直就想找个办法,能否让发往内部的邮件不需要外部邮件服务器中转,直接局域网内部就搞定了,外部邮件通过外部服务器收发呢?当然,基本上大部分邮件服务器都有这样的功能,但都或者庞大无比,或者价值不菲,当然,linux下有许多开源软件可以搞定,但公司还有许多软件需要运行在windows下,而且linux下的邮件服务器配置复杂啊。
https://downloads.mysql.com/archives/community/
此方法我也不知道为什么在CentOS7里面安装之后可以用,在Debian服务器里面无法进行编译安装使用。另外在使用的过程中,有时候可能也需要Percona-Server-client的支持。针对这个问题,可以使用以下方法解决:将文件上传到/home/soft/目录下,然后进行安装。安装方法如下:
show variables like '%char%'; 二、查看MySQL数据表(table)的MySQL字符集。
| ERROR 1046 (3D000): No database selected |
在文章开始前,大家可以先考虑几个问题,这样方便更快理解文章的知识点,下面的问题都会在文章中找到答案哦!
MySQL5.7 字符集设置 character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect=’SET NAMES utf8mb4’ character-set-client-handshake 用来控制客户端声明使用字符集和服务端声明使用的字符集在不一致的情况下的兼容性. character-set-client-handshak
现在很多朋友都选择了linux服务器下配置LNMP(linux+nginx+mysql+php),这里分享下LNMP安装与配置方法,需要的朋友可以参考下
参见 Laravel 5.4 migrate 时报错: Specified key was too long error
本文将详细介绍MySQL乱码的成因和具体的解决方案。在阅读本文之前,强烈建议对字符集编码概念还比较模糊的同学 阅读下博主之前对相关概念的一篇科普:十分钟搞清字符集和字符编码 MySQL出现乱码的原因
其实作为程序猿来讲,中国的程序猿遇到的问题可能会比国外的程序猿遇到的问题多很多。 一个原因是因为各种标准的制定、各种IDE的编写,都是由老外来完成的,制定出来的东西可能和中国人的习惯不太一样;还有一个原因就是因为国际编码的问题,通常,外国人写的东西无需对编码进行转换,默认的就是ISO-8859-1;到了中国,就涉及到本土化的问题,中文编码应当是GBK,这是本地化的编码。 而各种标准、各种浏览器一般用的都是ISO-8859-1,所有就造成了两种编码之间的转换。所以后来出现了UTF8,来解决各种编码问题。UTF8基本上包含了地球上所有的可见字符,十分强大。 但不幸的是,各种标准并没有按照这一编码来制定,而依然沿用以前的做法。 所以,解决各种乱码问题,就成了中国程序猿的必不可少的技能之一。 这篇文章,就是要和大家讨论种种乱码问题出现的原因,以及相应的解决办法,我目前已知的情况共有三种,下面就位大家一一讲解。
MySQL 字符编码集中有两套 UTF-8 编码实现:utf8 和 utf8mb4。
最近不知怎么的就迷恋上php环境搭建的各种配置,不管是centos几点版本,总想去试试,去踩坑,给你自己找点事情做做,下面直接上步骤
领取专属 10元无门槛券
手把手带您无忧上云