如何在mysql中检查二进制字符串是否为UTF-8?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在mysql中检查二进制字符串是否为UTF-8?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1135字,纯文字阅读大概需要2分钟。
内容图文
![如何在mysql中检查二进制字符串是否为UTF-8?](/upload/InfoBanner/zyjiaocheng/905/cfc7d2c558ea40508b49cfaf8cd37e9b.jpg)
我找到了一个Perl正则表达式,可以检查字符串是否为UTF-8(正则表达式是从w3c site开始).
$field =~
m/\A(
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*\z/x;
但我不知道如何将它移植到MySQL,因为看起来MySQL不支持字符的十六进制表示,见this question.
有任何想法如何将正则表达式移植到MySQL?
或者您可能知道其他任何方法来检查字符串是否有效UTF-8?
更新:
我需要在MySQL上进行此检查,因为我需要在服务器上运行它以纠正损坏的表.我不能通过脚本传递数据,因为数据库大约是1TB.
解决方法:
我已经设法修复了我的数据库使用的测试只有在你的数据可以使用单字节编码表示时才有效,在我的情况下它是latin1.
我已经使用了mysql将不是utf-8的字节更改为’?’的事实转换为latin1时.
这是支票的样子:
SELECT (
CONVERT(
CONVERT(
potentially_broken_column
USING latin1)
USING utf8))
!=
potentially_broken_column) AS INVALID ....
内容总结
以上是互联网集市为您收集整理的如何在mysql中检查二进制字符串是否为UTF-8?全部内容,希望文章能够帮你解决如何在mysql中检查二进制字符串是否为UTF-8?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。