首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL 编码和解码

背景:目前正在进行业务重构,需要对使用MySQL的业务库表进行重新设计,在迁移时,遇到了中文字符乱码问题(源库表的默认编码是LATIN1,新库表的默认编码为UTF8),故重新学习了下MySQL编码和解码相关知识...比如向默认字符集为utf8的数据表插入utf8编码的数据前没有设置连接字符集,查询时设置连接字符集为utf8; 插入时根据MySQL服务器的默认设置,character_set_client、character_set_connection...此时通过设置character_set_results分别为gbk、utf8、latin1时,查看下test表中的数据: MySQL [CCDB4_SRC]> set names gbk; MySQL...语句指定连接字符集,且用mysql_ping重连断开的长连接时也会把连接字符集重置为utf8; 对于MySQL PHP API,一般页面级的PHP程序总运行时间较短,在连接到数据库以后显式用SET NAMES...语句设置一次连接字符集即可; 但当使用长连接时,请注意保持连接通畅并在断开重连后用SET NAMES语句显式重置连接字符集。

5.8K20

MySQL的安装与配置

方法1: 用SET PASSWORD命令     首先登录MySQL,使用mysql自带的那个客户端连接上mysql。      ...,连接上mysql服务端。      ...1,方案一:在插入数据之前,先执行一条指令:set names latin1,但是我们如果断开连接,退出数据库之后,在连接进来以后,插入数据时如果不执行set names latin1,还是会乱码,说明这句指令没有让字符集永久生效...   2,方案二:在配置文件里面修改客户端和服务端参数,可以实现set names latin1;的效果,并且永久生效     首先在mysql文件夹下加入一个my.ini配置文件 ?...这样,把之前开的mysql服务端关了,重新启动,mysql的所有编码都改为utf8了,就不会出现中文编码乱码的现象了,而且这是永久性修改的,退出之后再进入查看数据,也不会出现问题。 ?

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    1-MYSQL基础理论知识总结

    ,本质上还是在TCP连接上通过MySQL协议跟MySQL进行交互。...MySQL可以动态安装或移除存储引擎,可以有多种存储引擎同时存在,可以为每个Table设置不同的存储引擎。...utf-8兼容比较好,对于mysql来说UTF-8(每个汉字占三个字节); WeiyiGeek. (2) 数据库字符集问题 描述:在MySQL有六处使用了字符集,分别为:client 、connection...在查询的时候如果想看不是uft8字符集插入的数据而是latin1的话就必须set names latin1才能查看正常 4.连接服务器得终端工具得字符集有时也需要进行设置; LINUX > system...cat /etc/sysconfig/i18n 客户端 > 设置UTF8 - set names utf8 (建议中英文选择utf8) 服务端 > my.cnf中mysqld更改|响应的字符集 WeiyiGeek

    37030

    10分钟学会理解和解决MySQL乱码问题

    又或者存入MySQL的时候set names utf8(C2),而取出的时候却使用了set names gbk(C2′),那么结果也必然是乱码 2....可见,如果在从数据文件读入数据后,不进行编解码的话在存储引擎内部是无法进行字符级别的操作的。 ---- 关于错进错出 在MySQL中最常见的乱码问题的起因就是把错进错出神话。...UTF8和GBK所能表示的字符数量范围如下 GBK单个字符编码后的取值范围是:8140 – FEFE 其中不包括**7E,总共字符数在27000左右 UTF8单个字符编码后,按照字节数的不同,取值范围如下表...可见MySQL内部如果无法找到一个UTF8字符所对应的GBK字符时,就会转换成一个错误mark(这里是问号)。而每个字符集在程序实现的时候内部都 约定了当出现这种情况时的行为和转换规则。...而事实上,他对于你已经损坏的数据一点帮助也没有,甚至连已经该表已经创建列的默认字符集都无法改变。

    1.3K80

    php与Redis实现一个100万用户的投票项目,如何实现

    int(11) unsigned DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8...首先连接上Redis服务器,然后保存投票人id,然后将投票人id为key记录每个用户的票数,然后返回给index.html文件,最后使用global\_voteid作为key记录总票数,也可以作为MySQL...首先,连接MySQL数据库和Redis服务器,然后每10秒执行一次while循环。 在while循环中,获取插入到mysql中的自增长投票主键和最新投票主键(位置)。 确定插入位置是否存在。...('set names utf8'); //连接redis $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->auth...$last) { $last = 0;//设置为0 } //如果所有的数据都被插入到MySQL中 if ($vid == $last) { echo

    73220

    网易MySQL微专业学习笔记(八)-MySQL字符集

    不同的字符序决定了字符串在比较排序中的精度和性能不同。...-character_set_system:系统元数据(字段名等)字符集 字符集设置级别 服务器级 配置文件设置 [mysqld] character_set_server = utf8...utf8: 统一设置以上字符集; 配置文件设置: [mysql] default-character-set=utf8 常见乱码原因 1、数据库存储字符集不能正确编码(不支持)client...2、连接字符集与数据存储字符集设置一致,推荐使用utf8. 3、驱动程序连接时显示指定字符集(set names xxx) mysql C API 初始化数据库语柄后马上用mysql_options设置...MYSQL_SET_CHARATER_NAME属性我utf8 mysql PHP:连接到数据库以后显示用SET NAMES 语句设置一次连接字符集 mysql JDBC: url="jdbc

    53220

    从一个慢查询到MySQL字符集编码

    而在MySQL数据库的字符集设置相当灵活和复杂,因此经常容易导致各种问题(例如索引失效,乱码,字符集转换损失性能等),因此本文专门整理和介绍下MySQL字符集相关的内容,为DBA同学和开发同学在实际工作中提供一些参考信息...后续我也仔细阅读了MySQL的问题,根据我自己的理解之所以设置这个参数,应该是针对于这种情况的: 假设MySQL当前没有character_set_connection这个参数,SQL语句在server...字符集设定的是utf8,然后插入字符""(编码是F0A18BBE),则最后会发现warning 以及数据乱码: set names utf8; mysql> INSERT INTO test_user...为了说明这个问题,本文来做如下的测试: 设置终端字符集为utf8。 mysql的所有字符集配置都改成latin1。...因此在插入数据和读取数据的时候,其实都是把Latin1编码中的每个字节读出来,之后在终端会被转换成UTF8编码显示。所以显示的数据也是正确的没有乱码。

    39210

    最简单的CI框架入门示例–数据库取数据

    1.下载CI框架(自己找) 2.配置 database.php配置:     为数据库服务器设置 connection 参数: $db['default']['hostname'] = "your-db-host...DEFAULT NULL, `age` VARCHAR(3) CHARACTER SET utf8 DEFAULT NULL, `sex` VARCHAR(2) CHARACTER SET utf8...> 说明: parent::__construct();不可少 $this->load->database();一定不能少不然会报错 也可以实现“自动连接” 功能,将在每个一页面加载时被自动实例化数据库类...要启用“自动连接”,可在如下文件中的 library 数组里添加 database: application/config/autoload.php 不然就要像这里一样写在每个页面上。...("SET NAMES GBK"); //防止中文乱码 mysql_query("set names utf8;");//在mysql_select_db("");后加入.

    2.4K40

    MySQL字符集终极指南--进阶篇

    请先阅读上篇:MySQL字符编码指南--基础篇1. 字符集四类设置1.1 操作系统字符集以下配置项是Linux系统的本地化(localization)设置,用于控制系统在不同方面如何呈现和处理数据。...下面是每个配置项的解释:[root@VM-94-230-centos ~]# localeLANG=zh_CN.GBK: 设置系统的默认语言和字符集。...1.3 MySQL字符集MySQL的字符集设置提供了灵活的层次结构,这些层次分4层,允许你在服务器、数据库、表和列级别控制字符集和排序规则,这有助于确保数据的一致性和正确性,特别是在处理多语言和国际化环境时...这3个字符集的具体功能见下图:MySQL命令:set names latin1 相当于设置session级别的character_set_client, character_set_connection...具体测试结果见下图:终端字符集:gbkset names latin1; set names gbk;set names utf8;下一篇《MySQL字符集终级指南--实战篇》将用一些实战例子来说明字符集设置不当可能遇到的种种问题

    2.2K31

    MySQL数据库编码有关问题--Java学习网

    在程序开发中,有时会被字符乱码的问题所困扰。对此,必须理解 MySQL 的字符集编码设置的原理:在MySQL中,默认使用的是lartin1,也就是ISO8859-1字符集编码。...,安装程序会自动在配置文件中把 default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏的都用 UTF-8 存储。...; 有时设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。...解决方法是在发送查询前执行一下下面这句: SET NAMES 'utf8'; SET NAMES显示客户端发送的SQL语句中使用什么字符集。...因此,SET NAMES 'utf8' 语句告诉服务器“将来从这个客户端传来的信息采用字符集'utf8'。它还为服务器发送回客户端的结果指定了字符集。

    1.2K20

    技术分享 | MySQL 字符集再探

    在最高位不为0时,额外使用1~3字节编码。 即它们是变长编码,每个字符占用1~4字节 只表达 ASCII 0~127字符的话,Latin1、GB系列、UTF8 等编码是完全相同的....character_set_client不能被设置为以下几个字符集 (参考链接:https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html...(除了指明字符集的字符串字面量, 如 _utf8mb4"中文字符串".) 2.3 SET NAMES 语句 mysql> SET NAMES gb2312; MySQL文档: 该语句设定3个关于 character...该语句不设置 character_set_server 。 注:MySQL 客户端的--default-character-set参数效果和SET NAMES语句一样。 $ mysql -h ......这个语句, 是以终端字符集 utf8 编码的. MySQL 把 utf8 数据当作 gb2312 数据, 转换成 utf8 数据, 自然产生了乱码。

    42320

    Linux基础(day54)

    root密码 root用户是mysql的超级管理员用户,和linux系统的root用户类似,不过和Linux的不一样 默认mysql的 root 用户密码是空的,直接就可以连接上去,不需要输入密码,但是不安全...[root@hanfeng ~]# 在设置密码的时候,会看到有输出信息,但这不是报错信息,这是告诉你 你现在密码在当前命令行显示出来了,这样不太安全 这时在想直接登录mysql,就会提示需要输入密码了...CHARSET=utf8; Query OK, 0 rows affected (0.01 sec) mysql> 查看表,会看到变成了utf8 mysql> show create table...> 若想重启依然生效,那需要修改配置文件/etc/my.cnf 在[mysqld]里面定义 查看队列 show processlist; //查看库的状况,比如,那些用户在连,做了些什么操作,是否锁表...设置为0表示不限制。通常我们设置为100足够 五. 同学分享的亲身mysql调优经历

    88780
    领券