Oracle取字符串长度涉及两种方法,lengthb(string)与length(string)。lengthb(string)计算字符串所占的字节长度,返回单位为字节;length(string)计算字符串所占的字符长度,返回单位为字符。一个汉字在Oracle数据库里的字节长度与数据库的字符集相关。UTF-8编码属于变长度编码,一个字符的编码长度为1~4个字节。1~4个字节的编码分别对应128个、1920个、61440个、1’048‘576个编码点,合计1’112‘064个字符。
ASCII编码为单字节编码,取值范围为0x00~0x7F,取值范围为b1xxx'xxxx为扩展ASCII。Unicode为一个字符编码系统,提供足够空间以处理其庞大的字符集,包括UTF8、UTF-16和UTF-32编码格式。
ANSI编码使用0x00~0x7F范围的1个字节表示1个英文字符,超出此范围的使用0x80~0xFFFF表示,即扩展的ASCII编码。
Java计算字符串的字符长度时,1字符等于2字节。英文和数字占一个字节,中文占两个字节。汉字编码范围为\u4e00-\u9fa5,双字节字符编码范围为\u0391-\uffe5。String类和其继承类的length()与codePointCount()方法用于计算字符串长度,其中length()返回UTF-16编码的字符代码单元数量,codePointCount()返回实际的字符数量。
实例验证:String str1="\u1d56b",str1.length()打印结果为2,str1.codePointCount(0,str1.length())同样打印结果为2。而String str2="\ud875\udd6b",str2.length()打印结果为2,但str2.codePointCount(0,str2.length())打印结果仅为1。
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。