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 字符集。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

复健第二天之[MoeCTF 2022]baby_file

打开题目在线环境可以看到: 感觉要用伪协议去求,但是我们并不知道flag的位置,这里我选择用dirsearch去扫一下: 最像的应该就是flag.php了 于是就构建payload: **?filephp://filter/convert.base64-encode/resource…

机器学习之SVD奇异值分解实现图片降维

SVD奇异值分解实现图片降维 目录 SVD奇异值分解实现图片降维1 SVD奇异值分解1.1 概念1.2 基本步骤1.2.1 矩阵分解1.2.2 选择奇异值1.2.3 重建矩阵1.2.4 降维结果 1.3 优缺点1.3.1 优点1.3.2 缺点 2 函数2.1 函数导入2.2 函数参数2.3 返回值2.4 通过 k 个奇异值降维 3 实际测试3…

PyTorch使用教程(6)一文讲清楚torch.nn和torch.nn.functional的区别

torch.nn 和 torch.nn.functional 在 PyTorch 中都是用于构建神经网络的重要组件,但它们在设计理念、使用方式和功能上存在一些显著的区别。以下是关于这两个模块的详细区别: 1. 继承方式与结构 torch.nn torch.nn 中的模块大多数是通过继承 torch.nn…

移动端布局 ---- 学习分享

响应式布局实现方法 主流的实现方案有两种: 通过rem \ vw/vh \ 等单位,实现在不同设备上显示相同比例进而实现适配. 响应式布局,通过媒体查询media 实现一套HTML配合多套CSS实现适配. 在学习移动端适配之前,还需要学习移动端适配原理: 移动端适配原理(Viewport) 了解VSCo…

cuda + cudnn安装

1.安装CUDA Toolkit 在设备管理器(此电脑–右键–属性)的显示适配器中可以查看自己的显卡型号,去下载对应的CUDA Toolkit 。或者输入以下命令查看Driver Version ,cuda Version:12.2代表12.2版本以下兼容可以进行安装 …

C++入门基础之命名空间|using声明|缺省参数

命名空间 一、命名空间的基本概念 命名空间是 C 中的一种机制,用于将相关的标识符(包括函数、类、变量、对象、结构体、枚举等)分组在一起,以避免命名冲突。 它可以看作是一个逻辑容器,将具有相似功能或来自同一模块…

【PyCharm】快捷键使用

【PyCharm】相关链接 【PyCharm】连接 Git【PyCharm】连接Jupyter Notebook【PyCharm】快捷键使用【PyCharm】远程连接Linux服务器【PyCharm】设置为中文界面 【PyCharm】快捷键使用 PyCharm 是一个功能强大且专为 Python 开发设计的集成开发环境(IDE&#xff09…

DevUI 2024 年度运营报告:开源生态的成长足迹与未来蓝图

在当今数字化飞速发展的时代,开源已成为推动技术创新与协作的重要力量。DevUI 作为开源领域的重要一员,其发展历程与成果备受关注。值此之际,GitCode 精心整理了 DevUI 年度运营报告,为您全面呈现 DevUI 社区在过去一年里的开源之…

python中的RPA->playwright自动化录制脚本实战案例笔记

playwright录制功能使用绕过登录操作 1、首先安装playwright pip install playwright2、 安装支持的浏览器 playwright install # 安装支持的浏览器:cr, chromium, ff, firefox, wk 和 webkit3、接着在自己的项目下运行录制命令: playwright codegen…

Vue.js组件开发全解析

Vue.js组件开发全解析 文章目录 Vue.js组件开发全解析一、Vue.js基础回顾(一)Vue实例(二)指令(三)计算属性和方法 二、组件基础(一)组件的概念(二)全局组件注…

如何选择适合特定项目需求的人工智能学习框架?

人工智能学习框架(AI Learning Framework)是一种用于开发、训练和部署人工智能模型的软件平台,旨在简化AI模型的设计、训练和部署过程。这些框架通常提供一系列工具、库和预构建模块,使开发者能够快速实现机器学习任务&#xff0c…

架构设计:微服务还是集群更适合?

在现代软件开发中,微服务和集群是两种广泛应用的架构设计方案。随着系统需求的不断复杂化和规模的扩大,选择一种适合的架构对系统的性能、可维护性和扩展性至关重要。那么,在架构设计中,是选择微服务还是集群更适合?本…

Spring Bug解决

报错: Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type com.itxl.spring6.iocxml.User available: expected single matching bean but found 2: user,user1 at org.sp…

算法(蓝桥杯)贪心算法5——删数问题的解题思路

问题描述 给定一个高精度的正整数 n(n≤1000 位),需要删除其中任意 s 个数字,使得剩下的数字按原左右顺序组成一个新的正整数,并且这个新的正整数最小。例如,对于数字 153748,删除 2 个数字后&a…

元素隐式具有 “any“ 类型,因为类型为 “string“ 的表达式不能用于索引类型

元素隐式具有 “any” 类型,因为类型为 “string” 的表达式不能用于索引类型 “{ minLon: string; maxLon: string; minLat: string; maxLat: string; minTime: string; maxTime: string; keyword: string; subjct: string; ele: string; }”。 在类型 “{ minLon:…

《探秘鸿蒙NEXT中的人工智能核心架构》

在当今科技飞速发展的时代,华为HarmonyOS NEXT的发布无疑是操作系统领域的一颗重磅炸弹,其将人工智能与操作系统深度融合,开启了智能新时代。那么,鸿蒙NEXT中人工智能的核心架构究竟是怎样的呢?让我们一同探秘。 基础…

git克隆原项目到新目录,保留提交记录分支等,与原项目保持各自独立

1、克隆原仓库到本地 --mirror 会完整克隆所有git数据,包括所有分支、标签、提交记录 git clone --mirror http://gitlab.com.../old-project.git2、进入文件夹 cd old-project.git3、添加目录仓库为远程 xx-orgin表示给远程地址命名 git remote add xx-orgin htt…

U盘被格式化后的数据救赎与防范策略

一、U盘格式化后的数据困境 在日常的工作与生活中,U盘作为数据传输与存储的重要工具,扮演着不可或缺的角色。然而,当U盘不幸遭遇格式化操作后,存储在其中的宝贵数据瞬间化为乌有,给用户带来极大的困扰。格式化后的U盘…

PyBroker:利用 Python 和机器学习助力算法交易

PyBroker:利用 Python 和机器学习助力算法交易 你是否希望借助 Python 和机器学习的力量来优化你的交易策略?那么你需要了解一下 PyBroker!这个 Python 框架专为开发算法交易策略而设计,尤其关注使用机器学习的策略。借助 PyBrok…

【AI论文】LlamaV-o1:重新思考大型语言模型(LLMs)中的逐步视觉推理方法

摘要:推理是解决复杂多步骤问题的基本能力,特别是在需要逐步顺序理解的视觉环境中尤为重要。现有的方法缺乏一个全面的视觉推理评估框架,并且不强调逐步解决问题。为此,我们通过三项关键贡献,提出了一个在大型语言模型…