mysql 续行符_继续字符集——「一个命令行搞懂Mysql字符集」

2023-11-18

其实我纠结挺久,要不要写这一篇文章,不怎么想让大家感觉我好像只会字符集一样。。Mysql在数据的存储上,提供了不同的字符集支持。在数据的比对上,又提供了不同的字符序支持。与Oracle实例级别的设置不同,Mysql很灵活,它提供了不同级别的设置,包括:Server级,Database级,Table级和Column级。(简单的概念了解下,和今天讲得内容关系不大)今天只研究字符集,不讨论字符序~

e04b89845fd95e8bf912b81be0b29c02.png控制Mysql字符集的参数有这么多,先简单解释下这些参数的含义。character_set_client:客户端的字符集,当客户端向服务端发送请求时,请求以该字符集进行编码。character_set_connection:客户机/服务器连接的字符集

character_set_database:默认数据库的字符集,无论默认数据库如何改变,都是这个字符集;如果没有默认数据库,那就使用 character_set_server指定的字符集,这个变量建议由系统自己管理,不要人为定义。

character_set_filesystem:把os上文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的

character_set_results:结果集,返回给客户端的字符集

character_set_server:数据库服务器的默认字符集

character_set_system:系统字符集,这个值总是utf8,不需要设置。这个字符集用于数据库对象(如表和列)的名字,也用于存储在目录表中的函数的名字。

Sample1:模拟场景:character_set_server=utf8,character_set_client=gbk,character_set_results=gbk,terminal(我的iterm工具)的字符集为gbk。首先,创建一个测试表t_char

6cb621867961b3c63fa2ce902df95d4f.png将terminal的字符集修改为gbk

d741b4f6aa9a8622514504fcd49dcb9a.png执行命令:mysql -S data/my3306/mysql.sock -proot gu -e "set character_set_client=gbk;set character_set_results=gbk;truncate table t_char;insert into t_char values('中');select c1,hex(c1) from t_char;"

324b26b02615ec6b012fd1460d7617ab.png从上图中能看到,虽然我的客户端字符集为GBK,但是数据还是以UTF8的格式正确存进了数据库,并且结果显示也正常。(原理和Oracle字符集差不多)Sample2:模拟场景:character_set_server=utf8,character_set_client=gbk,character_set_results=gbk,terminal(我的iterm工具)的字符集为UTF8。将terminal的字符集修改为UTF8

0822dae5c28506f8b6f3bbacec57becf.png执行命令:mysql -S data/my3306/mysql.sock -proot gu -e "set character_set_client=gbk;set character_set_results=gbk;truncate table t_char;insert into t_char values('中');select c1,hex(c1) from t_char;"

d29ef932aa9bb85fc20c260012e89b6c.png期待的乱码终于出现,并且hex(c1)查出来的值为'E6B693',并不是我们熟悉的'E4B8AD'。那说明存进数据库就已经乱码了,已经不是改一下terminal字符集就能解决的。验证下猜测,只修改terminal字符集为GBK,继续查c1的值,为: '涓'。很明显这个结果是错误的。

daa86446ed1849c49d0c57e72337e585.png那么为什么数据库会存错呢?因为terminal为utf8,在shell窗口执行那一串命令时,'中'是以utf8编码的,但又告诉数据库,client端字符集为GBK,那么数据库就把utf8格式的'中',当成GBK格式的'中'做了一次转码,那肯定就转乱套了呀。。Sample3:模拟场景:character_set_server=utf8,character_set_client=utf8,character_set_results=utf8,terminal(我的iterm工具)的字符集为UTF8。

545aae87dab0f25703572114ccb4bdae.png当然,保持字符集一致,那永远也不会出现乱码的问题!(PS:所以每次发版的时候,我们都要跟研发同事说,注意sql文件的编码格式!)总结:通过这三个例子的说明,不知道大家有没有明白呢?其实Mysql的字符集和Oracle差不多。Oracle通过设置NLS_LANG来指定客户端字符集,Mysql通过设置character_set_client 来指定字符集。只是Mysql多了一个character_set_results参数控制返回客户端结果集的字符集参数。Mysql中没有dump()函数,可以用hex()函数,查看汉字转内码。还有很多强大的函数,大家可以去官网查一查~之前的字符集相关文章链接:如果没看过的可以看下,保证你以后遇上任何数据库乱码的问题都能解决!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql 续行符_继续字符集——「一个命令行搞懂Mysql字符集」 的相关文章

  • .whl is not a supported wheel on this platform的原因及其解决办法

    在PIP安装 whl文件的时候碰到这个错误 具体如下 我的python版本是3 4 4 这个错误的原因如下 可能的原因1 安装的不是对应python版本的库 下载的库名中cp27代表python2 7 其它同理 可能的原因2 下载的是对应版
  • IDEA写SQL语句时不会提示表名、列名的处理方法(实测有效)

    打出表名没有提示 下面进行设置 按照别人的设置没效果 打开设置 还是刚才的路径 要同时设置两个地方才有效
  • 《Netty实战》读书笔记

    第一章 Netty 异步和事件驱动 Netty包含网络编程 多线程处理和并发 NIO NIO 代表非阻塞 I O Non blocking I O Netty 的核心组件 Netty 的主要构件 Channel 回调 Future 事件和
  • SSM商城项目实战总结

    SSM商城项目实战总结 编程思想是指在软件开发过程中 程序员所遵循的一种思维模式或方法论 它是指导程序员如何组织和解决问题的一种思考方式 下面是对常见的编程思想进行的总结 面向对象编程 OOP 面向对象编程是一种将数据和操作数据的方法组合在
  • ADS使用J-LINK调试之配置方法

    ADS使用J LINK调试之配置方法 1 安装好ADS1 2及J LINK驱动文件 2 ADS配置 随便打开项目 进入AXD调试界面 在AXD中 选择 3 进入以下界面 选择 Add 进入J LINK安装目录下 添加 JLinkRDI dl
  • ubuntu终止terminal中下载任务以及继续下载

    ctrl c是终止正在下载的任务 wget c URL是继续刚才终止的那个任务
  • 22 年国内最牛的 Java 面试八股文合集(全彩版),不接受反驳

    很多小伙伴从四月份就开始准备面试了 截止现在已经过去 2 个多月的时间 显然这段时间的准备没有白费 很多小伙伴都报喜 成功拿到了 XX 公司的 Offer 下面我把这段时间给小伙伴本准备的 Java 面试八股文合集 全彩版 拿出来 来帮助没
  • Python 字符串拼接 ‘+=‘ 和 ‘join()‘ 谁的速度更快?

    一 字符串拼接的两种方法 程序当中经常出现需要不断接收新字符串并将这些字符串组成新字符串输出的情况 该方法一般有两种解决方案 创建一个空字符串 test str 将每次新传入的 new str 使用 test str new str 的方式
  • 面试题 02.07. 链表相交

    给你两个单链表的头节点 headA 和 headB 请你找出并返回两个单链表相交的起始节点 如果两个链表没有交点 返回 null 图示两个链表在节点 c1 开始相交 来源 力扣 LeetCode 链接 https leetcode cn p
  • Linux内核中PF_KEY协议族的实现(4)

    本文档的Copyleft归yfydz所有 使用GPL发布 可以自由拷贝 转载 转载时请保持文档的完整性 严禁用于任何商业用途 msn yfydz no1 hotmail com 来源 http yfydz cublog cn 6 通知回调处
  • Android高级工程师普遍进阶难题:遇到瓶颈我们该如何去提升自己?哪个方向

    不要抱怨 抱怨无济于事 只能带来负能量 最重要的是改变 7 坚持写博客和技术文章 多总结 多参与开源项目 8 选择一家好的有发展前途的公司陪其成长 当发现现在公司不能满足自己的成长和发展时 果断跳槽 因为人生毕竟最宝贵的是时间 特别是程序员
  • 《图解算法》总结

    最近快速阅读了 图解算法 这本算法的入门书 对其中的一些知识点做了总结 使用递归函数需要确定基线条件和递归条件 调用栈 在调用一个函数的时候 当前函数暂停并处于未完成状态 分而治之 D C算法 找出基线条件 然后不断将问题分解 直到符合基线
  • [springboot+thymeleaf ] 前台js读取后台传值

    后台代码 通过ModelAndView类型返回 RequestMapping value list method RequestMethod GET public ModelAndView list RequestParam value p
  • Windows 任务管理器 PF使用率 总数 核心内存 物理内存(转)

    1 CPU 使用 CPU的使用百分比 柱状图表示实时的CPU使用率 2 CPU 使用记录 CPU使用量随时间的变化曲线 其中红线则表示系统内核的使用率 红线需点击任务管理器的查看菜单 选中 显示内核时间 项 3 PF 使用 PF是页面文件
  • 550 Mailbox unavailable or access denied

    今天还处理了另外一个问题就是用户发往vip qq com 没有发送成功 还被退信
  • python中summary_看懂python3 之statsmodels包summary的参数解释

    放上代码例子 coding utf 8 import pandas as pd import matplotlib pyplot as plt import matplotlib import numpy as np import time
  • 信息安全中常用术语介绍

    转自 https www hi linux com posts 56503 html 我们在一些重大的安全事件发生后 经常会在相关新闻或文档中看到一些相关的安全术语 比如 VUL CVE Exp PoC 等 今天我们就来对这些常用术语的具体
  • 利用ajax获取服务器时间,并显示

    p p
  • MySQL 系列第一天

    MySQL 系列第一天 这篇文章是黑马程序员 MySQL 教程的笔记 好好学习哦 和 MySQL 数据库的交互 客户端单向连接认证 连接服务器 认证身份 MySQL 数据库属于 C S 架构 所以开启服务器程序后 需要通过客户端连接它 My

随机推荐

  • latex插入空白行

    1 2 行距 例如 3pt
  • 对话框中添加视图方法- CScrollView

    对话框中使用视图方法 今天工作过程中 又遇到了显示图片问题 为此把以前的代码整理一下 通过使用自定义的类继承CScrollView类 是图片或文字等 等能够通过滑块进行自动操作显示 记录查询 步骤 1 建立基本对话框程序 添加一个stati
  • 多线程之设计模式之Listener设计模式(观察者设计模式)

    虽然设计模式我们一般中用的很少 但是作为程序员设计模式是我们自我修养的一部分 so最近学习了一个设计模式 记下来喽 观察者模式 有时又被称为模型 视图 View 模式 源 收听者 Listener 模式或从属者模式 是软件设计模式的一种 在
  • 二、RISC-V SoC内核注解——译码 代码讲解

    tinyriscv这个SoC工程的内核cpu部分 采用经典的三级流水线结构进行设计 即大家所熟知的 取值 gt 译码 gt 执行三级流水线 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 上一篇博文中注
  • C++泛型中的类模板参数

    数据类型表 用户经由模板参数传递到模板的数据类型只在模板中有效 为模板所私有且数目种类有限 限制了模板之间的协作 类似于类之间要互相协作时 里面的数据成员都要是public 对互相公开所以可以方便使用 故在同一个泛型系统内部模板应该公开私有
  • 分段线性插值

    N 10 定义插值节点的个数 x 5 10 N 5 依据课本xi 5 i h i 0 1 N h 10 N y x 1 x 4 依据课本 1 插值公式 xi 5 0 25 5 依据课本xk 5 0 25k k 0 1 40 m length
  • vmware15/16/17 安装centos7失败卡顿等一系列问题及解决方案

    vmware15 failed to install the hcmon driver failed to install the USB inf 突然某一天 虚拟机运行的centos7很卡 于是想着重装一下 使用vmware15安装cen
  • LVGL---文本框(lv_textarea)

    目录 lv textarea文档地址 lv textarea文档地址 lvgl中文版本 v8 2 对应网盘中文文档 LVGL官方英文原版 v8 2
  • JQuery中&(‘#form‘).serialize()方法失效

    JQuery中serialize方法失效 要按照以下步骤检查 1 id是不是重名 2 hidden和display none设置以后 元素并不会被序列化 后台也无法获取 检查是不是有这个属性 3 form标签中的input标签中id和nam
  • 极简短网址链接生成系统网站源码

    极简短网址链接生成系统 前两年流行的新浪短网址和一些小站长搭建的短网址基本都gg了 想要一个既稳定又好用的短网址系统只有自己搭建了 今天给大家分享一个很好用的短网址系统 本系统是国内程序员开发 后台简洁 适合自用 安装教程 1 上传源码并解
  • .net下用c# 编写成语字典查询工具

    呵呵 以前弄的一个成语字典数据库 最近用C 写了个查询工具 界面 源代码如下 http blog csdn net greenerycn 请遵守署名非商业的CC版权 using System using System Collections
  • 【往届均已检索】2023年控制理论与应用国际会议(ICoCTA 2023)

    往届均已检索 2023年控制理论与应用国际会议 ICoCTA 2023 重要信息 会议网址 www icocta org 会议时间 2023年10月20 22日 召开地点 福建 厦门 截稿时间 2023年8月30日 录用通知 投稿后2周内
  • 时间格式2019-06-27T16:00:00.000Z转换为北京时间

    时间的描述 UTC 国际时间 UTC 8 伦敦时间 UTC 8就是国际时加八小时 是东八区时间 也就是北京时间 String dateTime 2019 06 27T16 00 00 000Z dateTime dateTime repla
  • 让ChatGPT帮你写一个剧情脚本

    最近 很多视频制作者正在使用AI编写视频脚本 效率直接提升20倍以上 而ChatGPT作为一个强大的AI模型 在各个领域都得到了广泛应用 尽管对于ChatGPT的介绍不是很多 但是它已经在很多自媒体平台上被广泛利用来处理工作了 如果你想学习
  • 激活函数及其各自的优缺点

    原文链接 感谢原作者 温故知新 激活函数及其各自的优缺点 1 什么是激活函数 所谓激活函数 Activation Function 就是在人工神经网络的神经元上运行的函数 负责将神经元的输入映射到输出端 激活函数对于人工神经网络模型去学习
  • 整体学习法之信息分类

    在学习的时候 我们都是有一个流程 获取信息 gt 理解信息 gt 扩展信息 gt 纠正信息 gt 应用信息 信息分成以下几类 随意信息 比如太阳半径多少 苹果的价格这些 都是一些毫无规律的东西 这些就是靠机械记忆 几乎不需要什么处理 也没有
  • [YOLO专题-16]:YOLO V5 - 如何把labelme json训练数据集批量转换成yolo数据集

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122334367 目录 前言 第1章
  • Java高级开发工程师面试题汇总

    面试主要涉及到的技术点 概述 以Java编程基础 JVM原理 Spring Spring Boot Redis Zookeeper 消息队列 Kafka Rocket MQ MySQL等为主 也包括Dubbo Tomcat性能优化 容器化技
  • 被腾讯云的AI绘画整破防了

    购买 618活动 贪便宜29 9买了个腾讯云的AI绘画 问题 主要遇到了两个问题 整破防了兄弟们 1 文档问题 只封装了请求之后获取base64格式的图片 没有封装如何从base64转换成图片展示出来 这个还需要自己去开发 2 sdk 安装
  • mysql 续行符_继续字符集——「一个命令行搞懂Mysql字符集」

    其实我纠结挺久 要不要写这一篇文章 不怎么想让大家感觉我好像只会字符集一样 Mysql在数据的存储上 提供了不同的字符集支持 在数据的比对上 又提供了不同的字符序支持 与Oracle实例级别的设置不同 Mysql很灵活 它提供了不同级别的设