如何检测 Latin1 编码列中的 UTF-8 字符 - MySQL

2023-12-13

我即将承担将数据库从 Latin1 转换为 UTF-8 的繁琐且充满陷阱的任务。

此时,我只想检查表中存储的数据类型,因为这将确定我应该使用什么方法来转换数据。

具体来说,我想检查 Latin1 列中是否有 UTF-8 字符,最好的方法是什么?如果只有几行受到影响,那么我可以手动修复此问题。

选项 1. 执行 MySQL 转储并使用 Perl 搜索 UTF-8 字符?

选项 2. 使用 MySQL CHAR_LENGTH 查找包含多字节字符的行? 例如SELECT name FROM clients WHERE LENGTH(name) != CHAR_LENGTH(name);这够了吗?

目前我已将 Mysql 客户端编码切换为 UTF-8。


字符编码与时区一样,是一个持续存在的问题根源。

您可以做的是查找任何“高位 ASCII”字符,因为这些字符要么是 LATIN1 重音字符或符号,要么是 UTF-8 多字节字符的第一个。除非你作弊,否则辨别差异并不容易。

要找出正确的编码,您只需SELECT两个不同的版本并进行视觉比较。这是一个例子:

SELECT CONVERT(CONVERT(name USING BINARY) USING latin1) AS latin1, 
       CONVERT(CONVERT(name USING BINARY) USING utf8) AS utf8 
FROM users 
WHERE CONVERT(name USING BINARY) RLIKE CONCAT('[', UNHEX('80'), '-', UNHEX('FF'), ']')

这变得异常复杂,因为 MySQL 正则表达式引擎似乎忽略了诸如\x80并使得有必要使用UNHEX()方法代替。

这会产生如下结果:

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

如何检测 Latin1 编码列中的 UTF-8 字符 - MySQL 的相关文章

随机推荐

  • android TrafficStats getUidRxBytes 不准确

    我编写了一个小 Android 应用程序 发送 Http 请求 接收来自服务器的响应 并计算传输和接收的字节数 代码如下 long receivedBytes TrafficStats getUidRxBytes uid lastNumer
  • 使用 RSA 进行模乘会导致 Java Card 上出现错误

    你好 我正在开发一个关于 Java Card 的项目 这意味着大量的模乘 我设法使用 RSA 加密系统在这个平台上实现模乘 但它似乎适用于某些数字 public byte modMultiply byte x short xOffset s
  • ACS 中是否支持通过 WS-Trust/ActAs 进行身份委托?

    我刚刚开始使用基于声明的安全性 并且有一个与身份委托相关的问题 我已经成功设置了一个本地虚拟 STS 和几个依赖它进行身份验证的 WCF 服务 Web 应用程序通过 STS 对用户进行身份验证并调用服务 A代表用户 using Channe
  • Google 登录对话框关闭 android studio 后屏幕闪烁

    我面临这个问题 但无法找到解决方案 我使用 firebase 在我的应用程序中实现了 Google Sign In 我面临的问题是 每当 登录 对话框关闭时 屏幕上就会出现一条从上到下的黑色条带 它移动得非常快 但仍然很明显 我想删除横跨屏
  • 在 MFC 程序中挂钩窗口创建

    我想在 MFC 程序中挂钩窗口创建 有什么办法可以做到这一点吗 Use 设置WindowsHookEx安装一个CBTProc 这是一些示例代码 只需致电InstallHook 从程序的开头开始 然后监视HCBT CREATEWND通知代码
  • 无法在 Google Play 中更新我的应用:aapt 错误

    今天 当我尝试上传应用程序更新时 我从 Google Play 控制台收到以下信息 将新 APK 上传到生产环境 上传失败 无法使用 aapt dump badging 分析您的 APK 错误输出 无法运行 aapt dump badgin
  • 在 ArrayList 中搜索特定对象

    我有一堂课叫Person 它有以下内容attributes 它有2个属性 ID and Telephone 1 个人可以拥有多部电话 因此您可能会在下面看到具有多个 ID 的人 public ArrayList
  • 用gson解析Json返回null对象

    我正在通过 gson 解析 Json 字符串 这是 Json 字符串 ID 1 Name Australia Active true ID 3 Name Kiev Active true ID 4 Name South Africa Act
  • 构造一个从字节数组读取的 java.io.File

    我正在使用需要 java io File 作为输入的 API 但我只想向 API 发送一个字节数组 有没有办法创建一个从我的字节数组而不是从磁盘读取的 File 对象 A File不读任何内容 它代表操作系统中的文件 或目录 对象 或虚拟文
  • 让 UiViewController 保持纵向模式 iOS6 VS iOS5

    我正在为 iOS5 和 iOS6 构建一个应用程序 我在 UINavigationController 中有这个 UIViewController 我希望它保持纵向模式 该代码适用于 iOS5 但不适用于 iOS6 iOS5 rotatio
  • 关闭 XCode CoreData 模型的 codegen

    我自己在 XCode 中使用已声明的类制作 CoreData 模型 编译器代码为我生成了重复项 如何摆脱它 在数据模型编辑器中 将右侧数据模型检查器中的 Codegen 选项更改为 手动 无 遗憾的是 据我所知 您必须分别为每个实体执行此操
  • 将数组值添加到 MongoDB 中,其中元素不在数组中

    在 MongoDB 中 这是我的简化结构account文档 id ObjectId 5a70a60ca7fbc476caea5e59 templates name Password Reset content AAAAAAAA name W
  • 在python中将ndjson转换为json

    我需要在 python 中将 ndjson 对象转换为 json 我看到 pypi org 中有一个库 但我无法使用它 这是 ndjson 0 3 1 license mit count 1551711 license apache 2 0
  • 捕获 C# 表单上的关闭事件

    嘿 我并不是想在这里碰碰运气 但我还有另一个 c 问题 我已经尝试了使用谷歌找到的所有可能的事件 这是代码 private void Form1 OnClose MessageBox Show I was closed 2 private
  • 使用 Action-Cable 的 Ruby-on-Rails 应用程序在开发中运行,但在生产模式中失败

    当从 GPS 接收器收到消息时 我的 RoR 应用程序使用 Action Cable 更新页面 这在开发模式下工作得很好 但在生产模式下浏览器不会收到页面更新 顺便说一句 这是在 Docker 容器中运行的 浏览器出现 404 错误 Err
  • vCard .vcf 文件下载浏览器支持 - godaddy [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我在网站上有一个下载 vCard vcf 链接 它可以在本地运行 但不能在线运行 只需在浏览器中打开文件而无需下载 我宁愿不用压缩它 仔细阅读后发现我需要这样写 AddType tex
  • 如何增加 ASP.NET 中的最大上传文件大小?

    我有一个接受 ASP NET 中文件上传的表单 我需要将最大上传大小增加到默认值 4 MB 以上 我发现在某些地方引用了以下代码msdn ConfigurationPropertyAttribute maxRequestLength Def
  • Powershell - 仅打印引号之间的文本?

    如何让以下文本的输出仅显示引号中的文本 不带引号 示例文本 this is an apple it is red this is an orange it is orange this is an blood orange it is re
  • 如何使用 LINQ 在集合中选择集合?

    我有以下结构 public class ToolSettings public string Extension get set public ObservableCollection
  • 如何检测 Latin1 编码列中的 UTF-8 字符 - MySQL

    我即将承担将数据库从 Latin1 转换为 UTF 8 的繁琐且充满陷阱的任务 此时 我只想检查表中存储的数据类型 因为这将确定我应该使用什么方法来转换数据 具体来说 我想检查 Latin1 列中是否有 UTF 8 字符 最好的方法是什么