latin1_swedish_ci(latin1 不支持存储中文、日文、韩文等多字节字符)

文章目录

  • 1、SHOW TABLE STATUS WHERE Name = 'batch_version';
  • 2、latin1_swedish_ci
      • 使用场景
      • 注意事项
      • 修改字符集和排序规则
        • 修改表的字符集和排序规则
        • 修改列的字符集和排序规则
        • 修改数据库的默认字符集和排序规则
  • 3、ALTER TABLE batch_version CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  • 4、SHOW TABLE STATUS WHERE Name = 'batch_version';
  • 5、两次查询结果的对比和区别
      • 第一次查询结果(修改前)
      • 第二次查询结果(修改后)
      • 主要区别
      • 为什么会有这种变化?
      • 需要注意的事项

1、SHOW TABLE STATUS WHERE Name = ‘batch_version’;

mysql> SHOW TABLE STATUS WHERE Name = 'batch_version';
+---------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+
| Name          | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Collation         | Checksum | Create_options | Comment |
+---------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+
| batch_version | MyISAM |      10 | Dynamic    |    6 |             32 |         196 | 281474976710655 |         2048 |         0 |              7 | 2024-11-27 18:02:32 | 2025-01-10 15:39:03 | NULL       | latin1_swedish_ci |     NULL |                |         |
+---------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+----------------+---------+
1 row in set (0.00 sec)

2、latin1_swedish_ci

latin1_swedish_ci 是 MySQL 中的一种字符集和排序规则组合。具体含义如下:

  • 字符集(Character Set): latin1

    • latin1 是 ISO 8859-1 的别名,支持西欧语言(如英语、法语、德语、西班牙语等)。
    • 它使用单字节编码,每个字符占用 1 个字节。
  • 排序规则(Collation): swedish_ci

    • swedish_ci 表示基于瑞典语的排序规则,ci 表示大小写不敏感(case-insensitive)。
    • 这种排序规则会将大小写字母视为相同(例如 Aa 是等价的)。

使用场景

  • 如果你的数据主要是西欧语言(如英语、法语等),并且不需要支持多字节字符(如中文、日文等),latin1_swedish_ci 是一个常见的选择。
  • 它是 MySQL 的默认字符集和排序规则(在旧版本中)。

注意事项

  1. 不支持多字节字符

    • latin1 不支持存储中文、日文、韩文等多字节字符。如果需要存储这些字符,建议使用 utf8mb4 字符集。
  2. 排序规则的影响

    • 排序规则会影响字符串的比较和排序。例如,swedish_ci 会将 Aa 视为相同,而 bin(二进制排序规则)则会区分大小写。
  3. 迁移到 UTF-8

    • 如果你的应用需要支持多语言,建议将字符集迁移到 utf8mb4,并使用 utf8mb4_unicode_ciutf8mb4_general_ci 排序规则。

修改字符集和排序规则

如果需要将表或列的字符集和排序规则修改为 latin1_swedish_ci,可以使用以下 SQL 语句:

修改表的字符集和排序规则
ALTER TABLE 表名 
CONVERT TO CHARACTER SET latin1 COLLATE latin1_swedish_ci;
修改列的字符集和排序规则
ALTER TABLE 表名 
MODIFY 列名 列类型 CHARACTER SET latin1 COLLATE latin1_swedish_ci;
修改数据库的默认字符集和排序规则
ALTER DATABASE 数据库名 
CHARACTER SET = latin1 COLLATE = latin1_swedish_ci;

如果你有更多问题,欢迎随时提问!

3、ALTER TABLE batch_version CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

4、SHOW TABLE STATUS WHERE Name = ‘batch_version’;

mysql> SHOW TABLE STATUS WHERE Name = 'batch_version';
+---------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
| Name          | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Collation          | Checksum | Create_options | Comment |
+---------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
| batch_version | MyISAM |      10 | Dynamic    |    6 |             32 |         196 | 281474976710655 |         2048 |         0 |              7 | 2025-01-17 14:17:25 | 2025-01-10 15:39:03 | NULL       | utf8mb4_general_ci |     NULL |                |         |
+---------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
1 row in set (0.01 sec)

5、两次查询结果的对比和区别

从你提供的两次 SHOW TABLE STATUS 查询结果可以看出,batch_version 表的字符集和排序规则发生了变化。以下是两次查询结果的对比和区别:


第一次查询结果(修改前)

Collation: latin1_swedish_ci
  • 字符集: latin1
  • 排序规则: latin1_swedish_ci
  • 说明:
    • 表使用的是 latin1 字符集,支持单字节编码(适用于西欧语言)。
    • 排序规则是 swedish_ci,表示大小写不敏感(case-insensitive),基于瑞典语的排序规则。

第二次查询结果(修改后)

Collation: utf8mb4_general_ci
  • 字符集: utf8mb4
  • 排序规则: utf8mb4_general_ci
  • 说明:
    • 表使用的是 utf8mb4 字符集,支持多字节编码(适用于全球所有语言,包括中文、日文、韩文等)。
    • 排序规则是 general_ci,表示大小写不敏感(case-insensitive),基于 Unicode 的通用排序规则。

主要区别

  1. 字符集不同

    • latin1 仅支持单字节编码,适用于西欧语言。
    • utf8mb4 支持多字节编码,适用于全球所有语言。
  2. 排序规则不同

    • latin1_swedish_ci 是基于瑞典语的排序规则,仅适用于 latin1 字符集。
    • utf8mb4_general_ci 是基于 Unicode 的通用排序规则,适用于 utf8mb4 字符集。
  3. 兼容性

    • latin1 无法存储多字节字符(如中文、日文等),而 utf8mb4 可以。
    • 如果你的数据中包含非西欧字符(如中文),使用 latin1 会导致乱码或数据丢失,而 utf8mb4 可以完美支持。
  4. 存储空间

    • latin1 每个字符占用 1 个字节。
    • utf8mb4 每个字符可能占用 1 到 4 个字节(取决于字符)。
  5. 排序和比较行为

    • latin1_swedish_ciutf8mb4_general_ci 都是大小写不敏感的,但它们的排序规则基于不同的语言和字符集,因此在某些情况下排序结果可能不同。

为什么会有这种变化?

  • 可能是你或其他人执行了修改表字符集和排序规则的操作,例如:
    ALTER TABLE batch_version 
    CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    
  • 这种修改通常是为了支持多语言字符(如中文)或统一字符集。

需要注意的事项

  1. 数据兼容性

    • 如果表中原本存储了 latin1 编码的数据,修改为 utf8mb4 后,可能需要确保数据正确转换,避免乱码。
  2. 索引和排序

    • 修改字符集和排序规则可能会影响索引和排序行为,建议在修改后测试相关功能。
  3. 应用程序兼容性

    • 确保应用程序能够正确处理 utf8mb4 字符集。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/956392.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于微信小程序的安心陪诊管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

如何将自己本地项目开源到github上?

环境: LLMB项目 问题描述: 如何将自己本地项目开源到github上? 解决方案: 步骤 1: 准备本地项目 确保项目整洁 确认所有的文件都在合适的位置,并且项目的 README.md 文件已经完善。检查是否有敏感信息&#xff0…

CSS笔记01

黑马程序员视频地址: 前端Web开发HTML5CSS3移动web视频教程https://www.bilibili.com/video/BV1kM4y127Li?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes 目录 引入方式 CSS特性 继承性 层叠性 优先级 Emmet写法 …

【机器学习】制造业转型:机器学习如何推动工业 4.0 的深度发展

我的个人主页 我的领域:人工智能篇,希望能帮助到大家!!!👍点赞 收藏❤ 引言 在当今科技飞速发展的时代,制造业正经历着前所未有的变革,工业4.0的浪潮席卷而来。工业4.0旨在通过将…

【游戏设计原理】72 - 学习曲线

学习曲线的观点本质上强调了玩家在游戏中逐渐掌握新技能的过程,旨在通过设计合适的难度和反馈机制,确保玩家在学习的过程中感受到挑战,同时又不会感到过于困难或无聊。 1. 学习曲线的定义和重要性 学习曲线反映了玩家在完成某个任务时&…

【Linux】进程优先级与进程切换

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:【Linux】进程状态 🔖流水不争,争的是滔滔不 一、进程优先级是什么二、查看系统进程三…

windows 极速安装 Linux (Ubuntu)-- 无需虚拟机

1. 安装 WSL 和 Ubuntu 打开命令行,执行 WSL --install -d ubuntu若报错,则先执行 WSL --update2. 重启电脑 因安装了子系统,需重启电脑才生效 3. 配置 Ubuntu 的账号密码 打开 Ubuntu 的命令行 按提示,输入账号,密…

二层交换机之作用、故障(Function and Malfunction of Layer 2 Switch)

二层交换机之作用、区别 1️⃣二层交换机 又叫数据链路层交换机 还被称为接入层交换机 又或者以太网二层交换机 用一句话描述其核心功能 就是基于MAC地址进行帧的转发和过滤 与传统的集线器不同 二层交换机能智能学习每个端口连接设备的MAC地址 并更新MAC地址表&#…

cursor重构谷粒商城02——30分钟构建图书管理系统【cursor使用教程番外篇】

前言:这个系列将使用最前沿的cursor作为辅助编程工具,来快速开发一些基础的编程项目。目的是为了在真实项目中,帮助初级程序员快速进阶,以最快的速度,效率,快速进阶到中高阶程序员。 本项目将基于谷粒商城…

Python自动化:基于faker批量生成模拟数据(以电商行业销售数据为例)

引言:个人认为,“造数据”是一个数据分析师的一项基本技能,当然啦,“造数据”不是说胡编乱造,而是根据自己的需求去构造一些模拟数据集,用于测试等用途,而且使用虚拟数据不用担心数据隐私和安全…

【全栈开发】----Mysql基本配置与使用

本篇是在已下载Mysql的情况下进行的,若还未下载或未创建Mysql服务,请转到这篇: 2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易(保姆级)_mysql8.0.40下载安装教程-CSDN博客 本文对于mysql的操作均使用控制台sql原生代码…

微软宣布Win11 24H2进入新阶段!设备将自动下载更新

快科技1月19日消息,微软于1月16日更新了支持文档,宣布Windows 11 24H2进入新阶段。 24H2更新于2024年10月1日发布,此前为可选升级,如今微软开始在兼容的Windows 11设备上自动下载并安装24H2版本。 微软表示:“运行Wi…

15. helm包管理器

helm包管理器 一、helm包管理器介绍、安装1、helm包管理器2、核心概念2.1 chart2.2 repository2.3 release 3、helm安装3.1 安装helm3.2 添加helm国内仓库 二、使用helm安装MySQL 8.01、搜索mysql8.0 chart包2、下载mysql8.0 chart包3、按需定制values.yaml3.1 values.yaml文件…

庄小焱——2024年博文总结与展望

摘要 大家好,我是庄小焱。岁末回首,2024 年是我在个人成长、博客创作以及生活平衡方面收获颇丰的一年。这一年的经历如同璀璨星辰,照亮了我前行的道路,也为未来的发展奠定了坚实基础。 1. 个人成长与突破 在 2024 年&#xff0c…

OSCP - Proving Grounds - BullyBox

主要知识点 如果发现有域名,则可以加入/etc/hosts后重新执行nmap,nikto等扫描dirsearch的时候可以使用完整一些的字典文件,避免漏掉信息.git dump 具体步骤 执行nmap 扫描,发现 80和22端口开放,访问后发现被重定向到 bullybox.local Star…

Linux中的基本指令(一)

一、Linux中指令的存在意义 Linux中,通过输入指令来让操作系统执行,以此达到控制操作系统的目的,类似于Windows中的双击,右键新建文件,新建文件夹等 1.补:关于屏幕的几个操作指令 ①清屏指令 clear 回…

C/C++内存管理(超详解)

目录 1.C/C内存分布 2.C语言动态内存管理 2.1 malloc 2.2 free 2.3 calloc 2.4 realloc 3.C动态内存管理 3.1new/delete操作内置类型 3.2new/delete操作自定义类型 3.3operator new与operator delete函数 3.4定位new表达式(placement-new) 1.C/C内存分布 内存中是如…

【React】静态组件动态组件

目录 静态组件动态组件创建一个构造函数(类)使用 class 实现组件**使用 function 实现类组件** 静态组件 函数组件是静态组件: 组件第一次渲染完毕后,无法基于内部的某些操作让组件更新「无法实现自更新」;但是,如果调用它的父组…

前端【3】--CSS布局,CSS实现横向布局,盒子模型

盒子分类 1、块级盒子 2、内联级盒子 3、内联块级盒子 4、弹性盒子 5、盒子内部分区 方法一:使用 float 普通盒子实现横向布局 方法二:使用 display: inline-block 内联块级元素实现横向布局 方法三:使用弹性盒子 flexbox&#xff0…

Python实现过年烟花效果及打包成可执行文件

博客:Python实现过年烟花效果及打包成可执行文件 在这篇博客中,我们将详细讲解如何使用Python和Pygame库实现一个过年烟花效果的程序,并介绍如何将Python脚本打包成Windows上可以直接执行的exe文件。我们将从代码的各个模块入手,…