【发布时间】:2012-03-04 20:57:51
【问题描述】:
因为 MySQL 5.1 不支持 4 字节 UTF-8 序列,我需要替换/删除这些字符串中的 4 字节序列。
我正在寻找一种干净的方法来替换这些字符。
Apache 库在这种情况下用问号替换字符很好,当然 ASCII 等价物会更好。
注意输入来自外部来源(电子邮件名称),目前升级数据库不是解决方案。
【问题讨论】:
-
你在开玩笑。 MySQL 在这个时代仍然不支持 Unicode?这是不合情理的。在只能处理 1、2 或 3 字节 UTF-8 序列时假装支持 Unicode,就像在只支持 1 字节 ASCII 序列时说支持 Unicode 一样大谎言。您要么支持任何合法的 Unicode 代码点,要么不支持 Unicode。这是一个二进制的东西。听起来 MySQL 不支持 Unicode。请告诉我这是个玩笑。
-
@tchrist:MySQL 5.5.3 及更高版本通过新的“utf8mb4”“字符集”(dev.mysql.com/doc/refman/5.5/en/charset-unicode.html)支持正确的 UTF-8。但是,“utf8”“字符集”最多只支持 3 字节的 UTF-8 多字节字符,据说是为了防止不同 MySQL 版本之间的复制问题。在未来的 MySQL 版本中,“utf8”可能会更改为“utf8mb4”的别名。
-
与this question 类似,但它请求的是 PHP 而不是 Java 的解决方案。
-
@pvgoddin 哪个 Apache lib 正在用问号替换字符?