在我的数据库中出现错误
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column
我使用 Java 和 MySQL 5。据我所知,4 字节 Unicode 在 Java 中是合法的,但在 MySQL 5 中是非法的,我认为这可能会导致我的问题,我想检查我的数据类型,所以这是我的问题: 如何检查我的 UTF-8 数据是 3 字节还是 4 字节 Unicode?p>
最佳答案
UTF-8以 1-3 个字节对基本多语言平面(即 U+0000 到 U+FFFF 包括在内)中的所有内容进行编码。因此,您只需要检查字符串中的所有内容是否 都在 BMP 中。
在 Java 中,这意味着检查任何 char
(UTF-16 代码单元)是高位还是低位代理字符,因为 Java 将使用代理对来编码非 BMP 字符:
public static boolean isEntirelyInBasicMultilingualPlane(String text) {
for (int i = 0; i < text.length(); i++) {
if (Character.isSurrogate(text.charAt(i))) {
return false;
}
}
return true;
}
关于java - 检查 UTF-8 数据类型 3 字节或 4 字节 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981109/