将字符串保存到Mysql之前进行验证,以获取占用3个以上字节的字符

我正在使用的Mysql db具有char编码utf8,但是超过3个字节的某些char集无法保存。我本来可以将编码更改为utf8mb4,但这不是一个选择。我要做的就是验证一个字符串,以检查该字符串是否将保存在Mysql中。我不想不必要地将字符限制为ASCII。如何检查一个char是否需要超过三个字节?

wdd16617723 回答:将字符串保存到Mysql之前进行验证,以获取占用3个以上字节的字符

如果您只想在mysql查询中而不是在programmaticaly中插入数据,则可以使用length()函数检查字节长度。

MySQL提供LENGTH函数以字节为单位获取字符串的长度,并提供CHAR_LENGTH函数以字符为单位获取字符串的长度。如果字符串包含多字节字符,则LENGTH函数的结果大于CHAR_LENGTH()函数的结果

http://www.mysqltutorial.org/mysql-character-set/

随后是示例查询

insert into x_table(data_string)
SELECT 'šč' as data_string where length('šč')<4

在Java中检查长度,然后再插入mysql

使用

String s = new String("stringvalue");

byte[] bytes = s.getBytes("UTF-8");

System.out.println("bytes.length = "+bytes.length);
可以在插入(String.getBytes()。length)之前检查

bytes.length。

,

计划A:

使用您的应用程序语言,将字符串转换为十六进制。然后寻找f0。该字节表示需要utf8mb4。

在MySQL中,表达式为HEX(col) REGEXP '^(..)*f0'

计划B:

尝试将您的文本插入备用表的CHARACTER SET utf8列中。读回去看看是否匹配。存储一个4字节的字符将把它变成问号或截断字符串。无论哪种方式,它都不匹配。

本文链接:https://www.f2er.com/3104885.html

大家都在问