MYSQL的字符问题--续<引用>

三个MySQL的系统变量是:
  ①character_set_client,终端字符集,告诉Server客户端提交的SQL语句的编码格式
  ②character_set_connection,连接字符集,是服务器翻译SQL语句时用到的编码格式
  ③character_set_results,返回的结果集的字符集,是服务器返回结果集之前把结果集转换成的编码格式
  在MySQL终端通过执行命令 show variables like 'char%'; 可以查看这几个变量的值。这三个变量通常都设定为同一种字符集,用命令set names [charset name];就可以修改这三个变量的值。一般来说,只要你设定了能够表示你的数据的字符集,你查询的结果都可以在终端正确显示。比如你在数据库中存入了中文数据,不管存入时使用的什么字符集,你在终端即可以用set names命令设置为utf8,也可以设置为gbk编码,只要你的终端显示的字符集和你的设定一致就可以正确处理中文。
  举个例子,使用的表t1是utf8编码,表中的字段c1继承了这个编码,表创建如下
  mysql> create table t1 ( c1 text not null ) character set utf8;
  用的字符是汉字“范”,gbk编码为B7 B6,utf8编码为E8 8C 83
  用下面的SQL语句插入数据:
  mysql> insert into t1 values ('范');
  1、如果终端设置为utf8,并且执行了 set names utf8,那么插入到数据库中的就是“范”这个字的utf8编码,这个过程中MySQL不需要做编码转换。写入数据库的内容可以通过执行 select hex( c1 ) from t1;得到数据的十六进制编码来验证。


  2、如果终端设置为utf8,并且执行了set names gbk,那么执行完这个插入操作后,写入的二进制数据是E9 91 BC,这是汉字“鑼”的utf8编码。这是因为,终端输入的“范”用的是utf8编码,而服务器以为终端发送过来的内容是gbk编码,所以在向t1表中插入的时候进行了一次gbk到utf8的转换,结果当然是错误的。


  3、如果终端设置为gbk,并且执行了set names gbk,那么执行完插入操作后,写入t1的依然是“范”这个字的utf8编码。插入过程中,终端输入的是“范”的gbk编码B7 B6,服务器被告知终端发过来的SQL语句是gbk编码(由character_set_client指定),所以在插入数据前做了一次gbk到utf8的编码转换。


  4、如果终端设置为gbk,并且执行了set names utf8,那么执行完插入操作后,MySQL会报出一个数据被截断的警告。实际上,输入终端的是“范”这个字符的gbk编码B7 B6,而服务器被告知客户端发过来的SQL语句是utf8编码,所以在执行过程中没有做转码,直到插入数据的时候,发现B7 B6不符合utf8的编码规则,给出了警告信息,实际插入的数据是3F 3F,也就是两个问号。


  查询的时候是同样的道理,MySQL也是根据set names设定的字符集来对返回给客户端的结果集做相应的编码转换,如果转换的结果和终端显示的字符集一致,就能正确显示,如果不一致就是乱码。
  结论是,只要终端的字符集和set names指定的字符集一致就可以让MySQL在处理过程中执行正确的转码并且正确地显示。
  另外,如果通过程序操作MySQL数据库, 那么也需要事先执行set names命令来指定程序希望输出的字符集。比如,用程序从一个utf8编码的数据库向另外一个gbk编码的数据库进行数据迁移,在选取源数据库数据之前,需要执行set names gbk,才能取到gbk编码的数据。
别再为3D抓取发愁了!Halcon手眼标定保姆级教程(Eye-to-Hand模式,含完整代码) 本文提供Halcon手眼标定的保姆级教程,详细讲解Eye-to-Hand模式下的3D抓取实现方法。从硬件配置、坐标系系统到标定流程和核心算法,涵盖完整代码和实战经验,帮助用户快速掌握工业自动化中的精准抓取技术。 阅读详情

相关推荐

Qt OpenGL 3D 点云数据显示

在Qt中使用OpenGL显示3D点云数据是一个常见的需求,特别是在计算机视觉、机器人学和三维重建等领域。下面我将介绍一个基本的实现方案。

深之JohnChen的专栏 1238

linux的tail命令学习与使用

查看文件内容的特殊方法  相信最基本的cat和less,more你已经很熟悉了,如果有特殊的要求呢:1. 如果你只想看文件的前5行,可以使用head命令,如:head -5 /etc/passwd2. 如果你想查看文件的后10行,可以使用tail命令,如:tail -10 /etc/passwdtail -f /var/log/messages参数-f使tail不停地去读最新的内容,这样有实时监视...

kanwoerzi 274

PC微信(3.9.2.23)逆向实战:定位并Hook消息接收函数

本文详细介绍了PC微信(3.9.2.23)逆向分析中定位并Hook消息接收函数的完整实战流程。通过Cheat Engine动态定位未读消息数内存地址,结合OllyDbg分析代码上下文,最终找到稳定的Hook点,并分享了实战中的关键注意事项与踩坑经验。

lll78的博客 473

Linux 查看命令

输出文件最后的部分 语法: tail [OPTION]… [FILE]… 参数: 参数 描述 -c, –bytes=[+]NUM 输出最后的NUM bytes -f, –follow[={name descriptor}] -F 和–follow相同 -n, –lines=[+]NUM 指定输出的行数,默认输出10行 -q, –quiet, –sile

Claroja 901

常规波束形成——时域波束形成、频域波束形成

本文介绍了波束成形,包括时域波束成形和频域波束成形,并解释了在实现过程可能存在疑惑的相位补偿。

Candy_Editor的博客 3657

ESD镜像解密与转换全攻略:从esd-decrypter到WinNTSetup的完整流程

本文详细解析了ESD镜像的加密特性与压缩优势,并提供了从解密到转换的完整实战指南。核心步骤包括使用esd-decrypter工具解密ESD文件为WIM格式,以及如何结合WinNTSetup进行灵活的系统安装或进一步封装为可引导的ISO镜像,帮助用户高效处理官方Windows安装镜像。

weixin_29207439的博客 450

MYSQL学习笔记——sql语句优化工具

优化sql:思路: 使用explan-》先查询type类型看看是all还是ref,然后判断 possible_keys (显示可能应用在这张表中的索引, 一个或多个。查询涉及到的字段是若存在索引, 则该索引将被列出,但不一定被查询实际使用) ; 如果这个值没有达到预期的效果(比如说本来预料到可能使用某个索引但是这里没显示),就去查看sql语句哪里出问题了, 如果这里显示了预料的可能使用的...

weixin_34293246的博客 120

实战:RK3568 Android14 调试 MIPI DSI 液晶屏

LCD1_RST -> 对应原理图网络连接到 GPIO。LCD1_PWR_EN ->用于给屏幕 VCC 供电。LCD0_BL_EN / LCD0_BL_PWM -> MP3302 升压芯片驱动 LED 灯条。![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/100f2be7f763494da1032464e272e63b.png&pinctrl {/* 配置 LCD_RST 和 LCD_EN */

qq_33427070的博客 1548

Linux 命令(文件和目录管理 - tail)

有 head ( 头 ) 自然就有 tail ( 尾巴 ) - 首尾呼应,tail 的用法和 head 差不多类似。只不过是显示后面几行,预设也是显示 10 行,若要显示非 10 行,使用 `-n` 选项即可。

青春不老,奋斗不止! 4832

Python 爬虫实战:爬取去哪儿网酒店评价,提取住宿体验关键词

本文介绍了基于去哪儿网酒店评价数据的爬取与分析方法。首先通过分析网页结构和数据加载机制,定位到评价数据的JSON接口及关键参数。然后使用Python搭建爬虫环境,实现多页评价数据的批量采集与存储,并通过反爬策略确保数据获取的稳定性。在文本分析环节,采用jieba分词和TF-IDF算法提取高频关键词,结合词云可视化展示用户关注点。分析结果显示位置、服务、卫生是核心关注维度,同时识别出好评与差评的关键驱动因素。该方法为酒店服务优化和消费者决策提供了数据支持,并可通过扩展实现更深入的情感分析和竞品对比。

2503_91057718的博客 999

【数据集4】GSWP3数据集详解

简介GSWP3数据集

WW、forever的博客 1366

液压集成块CAD设计要点与工程实践

液压集成块是液压系统中的关键部件,其设计直接影响系统性能和可靠性。通过CAD软件进行三维建模和工程图绘制时,需要遵循油道布局、密封结构等核心设计规范。合理的油道设计可降低压力损失,而精确的密封结构能减少泄漏风险。在实际工程应用中,采用自顶向下的设计方法和基准标注法能显著提升加工合格率。液压集成块CAD图纸广泛应用于工程机械、风电设备等领域,其设计优化可带来系统温升降低、能耗减少等显著效益。本文结合ISO标准和工程案例,详解SolidWorks等工具在液压集成块设计中的实操技巧。

weixin_33693070的博客 580

深度解析与实战:长短时记忆网络(LSTM)在股票走势预测中的应用(基于Python + PyTorch)

本文全面探讨了LSTM在股票价格预测中的应用,从理论基础到实践操作。文章首先强调了股票市场预测的重要性,并介绍了LSTM网络结构及其在处理时间序列数据中的优势。接着,详细说明了数据预处理的关键步骤,包括数据收集、清洗、特征选择和归一化。文章还讨论了LSTM模型的构建、训练和评估,并提供了Python及PyTorch的实操案例。最后,总结了LSTM在股票预测的成果,并提出了未来研究的方向,如模型优化和特征工程,旨在帮助读者掌握LSTM在股票价格预测中的应用,并探索提升模型性能的方法。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2100

linux下查看mysql字符类型_Linux中查看和设置MySQL数据库字符集< 二 >

一、设置编码LINUX修改vi/etc/my.cnfWINDOWS my.ini在[client]下添加default-character-set=utf8在[mysqld]下添加default-character-set=utf8保存,重启MySQL即可;二、创建对象时设置字符集1创建数据库指定数据库的字符集mysql>CREATEDATABASE IF NOT EXISTS myd...

weixin_27011811的博客 702

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Mysql Sql语句空格字符串等问题

Mysql Sql语句空格字符串等问题1、问题描述2、总结 1、问题描述 Mysql 里面SQL语句空格、字符串问题,你发现不了,但是就是运行报错。不服?来我们上源码。先来看一个删除表的。 DROP TABLE IF EXISTS 'user'; 堂堂正正删除表,没毛病,运行。 1 queries executed, 0 success, 1 errors, 0 warnings 查询:DROP TABLE IF EXISTS 'user' 错误代码: 1064 You have an error

珍惜 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

linux mysql 查看字符集_Linux中查看和设置MySQL数据库字符集< 一 >

1、创建数据库指定数据库的字符集mysql>create database mydb character set utf-8;通过配置文件设置创建数据库时字符集:#vi /var/lib/mysql/mydb/db.optdefault-character-set=latin1default-collation=latin1_swedish_ci为default-character-set...

weixin_42410477的博客 608

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Mysql字符集问题整理

MySQL默认字符集并不适用于我们的需要,在Ubuntu下面针对性的调整,这是配置文件查找,字符集修改及相关基础知识。

tpriwwq的专栏 1257

mysql别名引号与引用问题

mysql别名使用问题 本内容来源于官方文档 英文不错的同学可以直接到文档 https://dev.mysql.com/doc/refman/8.0/en/problems-with-alias.html 别名用的位置 可以在查询选择列表中使用别名来为列指定不同的名称,可以在GROUP BY,ORDER BY, HAVING,where中使用别名 使用时的问题 有问题 -- 获取每一个部门的平均薪资 -- 别名带引号 select did as "d",avg(salary) from t_employ

风泊月 3270

mysql字符集问题

MySQL数据库的字符集问题 1 问题描述 ​ 在Django存数据的时候,如果有中文,他会出现以下报错。 2 问题解析 ​ 直白的说,字符就像是单个的文字,编码就像是给每个文字的编号,字符集就像是字符与编码的集合,校验规则就是字符集的对应的排序规则,字符集加上对应的校验规则就是语言。(每种字符集可以有多种校对规则,但都有一个默认的校对规则) ​ MySQL数据库可以通过设定字符集,来使用对应的字符集和检验规则来组织字符。就像是解读一片文章的时候用那种语言来解析。

BeefpasteC的博客 309

mysql字符集乱码问题_mysql字符集乱码问题解决

基本概念• 字符(Character)是指人类语言中最小的表义符号。例如’A'、’B'等;•给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encoding)。例如,我们给字符’A'赋予数值0,给字符’B'赋予数值1,则0就是字符’A'的编码;• 给定一系列字符并赋予对应的编码后,所有这些字符和编码对组成的集合就是字符集(Character Set)。例如,...

weixin_31022521的博客 294

linux查看mysql创建数据库字符集,Linux中查看和设置MySQL数据库字符集< 一 >

1、创建数据库指定数据库的字符集mysql>create database mydb character set utf-8;通过配置文件设置创建数据库时字符集:#vi /var/lib/mysql/mydb/db.optdefault-character-set=latin1default-collation=latin1_swedish_ci为default-character-set...

weixin_39825322的博客 667

mysql 正则 分组引用

字符串相关学习资料:https://edu.51cto.com/video/3832.htmlhttps://edu.51cto.com/video/4055.htmlMySQL 正则表达式与分组引用的妙用 在处理数据时,我们经常需要对字符串进行复杂的模式匹配和提取。MySQL 的正则表达式功能提供了强大的工具来实现这...

weixin_40963986的博客 258

mysql转义字符 小于_mysql 转义字符问题

将插入到mysql内的字符进行转义的实质是:将php中的特殊字符如(‘’,“”,\, null)插入到数据库。PHP addcslashes() 函数定义和用法addcslashes() 函数在指定的字符前添加反斜杠。语法addcslashes(string,characters)参数 描述string 必需。规定要检查的字符串。characters 可选。规定受 addcslashes() 影响...

weixin_28939637的博客 845

mysql数值型比字符串型速度快_MySql性能优化读书比较<一> 数据类型

一,选择优化的数据类型1.更小的通常更好。更小的数据类型通常占用更少的磁盘,内存和cpu缓存,通常更快。2.简单就好简单的数据类型操作,通常需要更少的CPU周期。3.尽量避免NULL值列可为null,会占用更多的存储空间,也使得索引,索引统计,和值比较都更复杂。二.数据类型1、整型MySQL数据类型含义(有符号)tinyint(m)1个字节 范围(-128~127)smallint(m)2个字节...

weixin_28222493的博客 2623

Python 操作 MySQL 字符集的问题

使用 Python 操作 MySQL 有不少库供我们选择,比如 MySQLdb、mysqlclient、PyMySQL、peewee 和 SQLAIchemy 等。我使用的是 mysql-connector,它是 MySQL 官方提供的驱动器,用来给后端语言,比如 Python 提供连接。下面我们看...

hedeqiang 1006

mysql字符过长问题_【mysql】mysql中字符长度的问题

只适用mysql5.0以上的版本:1.一个汉字占多少长度与编码有关:UTF-8:一个汉字=3个字节GBK:一个汉字=2个字节2.varchar(n)表示n个字符,无论汉字和英文,Mysql都能存入n个字符,仅是实际字节长度有所区别3.MySQL检查长度,可用SQL语言:select LENGTH(fieldname) from tablename 来查看=========华丽丽分隔线,转载如下:=...

weixin_36373787的博客 1542
上一篇: 终于把mysql 编码解决了
下一篇: 程序中的路径问题
iteye_16607
博客等级 码龄8年 1粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值