`

UTF-8是变长编码问题

阅读更多

众所周知,UTF-8是变长编码,一个字符占1-4字节都有可能,

这给我们数据入库时的长度校验带来了不少麻烦,因为数据库中声明的

Varchar2(1000)

并不代表能够存放1000个字符,而是只能存放1000个字节。

 

其实,这个问题可以通过String.getBytes来解决,

如下代码:

String str="中文123";

       System.out.println(str.length());     

       try {

           System.out.println(str.getBytes("utf-8").length);//中、文 各占三字节,123各占1字节

           System.out.println(str.getBytes("GBK").length);

       } catch (UnsupportedEncodingException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

输出结果为

5

9

7

只要在Java中强制指定”utf-8”编码获取字符串的字节数组,就可以得到该字符串在UTF-8下的字节长度。

请参考。

分享到:
评论

相关推荐

    UTF-8toGBK_labview编码gbk_LabVIEWUTF-8_utf-8toGbk_

    首先,UTF-8(Unicode Transformation Format - 8 bit)是一种变长的Unicode编码,它使用1到4个字节来表示一个字符。UTF-8的优势在于对ASCII字符集的兼容性,前128个Unicode字符(包括英文、数字和常见符号)只需要...

    UTF-8编码表

    UTF-8是UNICODE的一种变长字符编码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。 如果UNICODE字符由2个字节表示,则编码成UTF-8很可能需要3个字节,而如果UNICODE...

    gb2312,utf-8,utf-8-bom等编码格式的互相转换

    UTF-8,即“统一字符集的8位无符号格式”,是一种变长编码,可以表示Unicode字符集中所有的字符。对于ASCII字符(如英文字符),UTF-8只用一个字节,而对于非ASCII字符,如汉字,可能需要2到4个字节。UTF-8的最大...

    字符编码转换类,支持 ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom互相转换

    3. UTF-8:一种变长的Unicode编码,用1到4个字节表示一个字符。对于ASCII字符,UTF-8编码与ASCII相同,都是单字节。UTF-8的特殊之处在于它包含一个字节顺序标记(BOM),即UTF-8+BOM,但大多数情况下,UTF-8无BOM更...

    UTF-8 汉字码表

    UTF-8(Unicode Transformation Format - 8 bits)是一种变长字符编码,由Ken Thompson于1992年设计,旨在解决多语言环境下字符编码兼容性问题。其核心优势在于能够以不同的字节长度来表示不同数量的Unicode字符,...

    UTF-8 Unicode GBK GB2312 编码之间的区别和联系

    - 变长编码机制使得常见字符占用的空间较少。 - **应用场景**:广泛应用于Web页面、电子邮件和其他网络应用中。 #### 四、Unicode - **定义**:Unicode是一种统一的字符编码标准,目标是覆盖世界上所有的字符和...

    utf-8 ansi 字符互转 工具

    1. **UTF-8**:全称为“Unicode Transformation Format - 8”,是一种变长的字符编码,可以表示Unicode字符集中的所有字符。UTF-8最显著的特点是它对英文字符使用单字节,而对其他语言(如中文、日文等)使用多字节...

    c++ UTF-8 UTF-16转换

    UTF-8是一种变长的字符编码,它使用1到4个字节来表示一个Unicode字符,其中ASCII字符(0-127)只需要1个字节。UTF-16则通常使用2个字节,对于大部分的Unicode字符,但对超出基本多文种平面(BMP)的字符,如表情符号...

    UTF-8toGBK_labview编码gbk_LabVIEWUTF-8_utf-8toGbk_源码.zip

    UTF-8是一种变长的Unicode编码方式,它可以表示Unicode字符集中所有的字符,包括中文。UTF-8的特点是英文字符用单字节表示,而大多数非英文字符,如中文,使用2至4个字节。这样设计使得UTF-8在处理英文为主的文本时...

    UTF-8汉字码表.txt

    其中,UTF-8(8位通用转换格式)是一种可变长度的字符编码,它兼容ASCII,并且能够表示Unicode标准中的所有字符。在给定文件“UTF-8汉字码表.txt”的描述中提到的“utf-8中文汉字编码表”,主要关注的是如何用UTF-8...

    utf-8码转换器(转换成utf-8码)

    UTF-8是Unicode的一种实现方式,它是变长编码,每个字符可以由1到4个字节表示。对于ASCII字符,UTF-8编码和ASCII编码相同,都是单字节,这使得UTF-8在处理英文文本时效率较高。 2. **SWT(Standard Widget Toolkit...

    UTF-8转ANSI文本文件转换器

    UTF-8(Unicode Transformation Format - 8 bit)是一种广泛使用的变长字符编码,它能够表示Unicode字符集中的所有字符。UTF-8的特点是前几个常用的ASCII字符(如英文字符)使用单字节编码,而其他非ASCII字符则使用...

    易语言判断UTF-8字符

    UTF-8是变长编码,它可以表示Unicode字符集中的所有字符,对于英文字符,UTF-8编码与ASCII编码相同,但对于中文和其他非英文字符,UTF-8会使用多个字节。 2. **`IsTextUTF8`函数的使用**:调用`IsTextUTF8`函数时,...

    GB2312转UTF-8(C代码)

    UTF-8是一种可变长度的Unicode编码,它能表示Unicode字符集中所有的字符,包括各种语言的字母、数字以及特殊符号。UTF-8的一个显著特点是兼容ASCII编码,对于ASCII字符,UTF-8编码与ASCII编码完全相同,仅用一个字节...

    UTF-8编码转换器

    UTF-8编码是一种广泛使用的字符编码标准,它在信息技术领域起着至关重要的作用。这个“UTF-8编码转换器”工具旨在帮助用户方便地将文本数据从其他编码格式转换为UTF-8,确保数据在不同系统和平台之间的兼容性。 在...

    汉字字符编码(utf-8 unicode gb2312)

    汉字字符编码是计算机处理汉字时的关键技术,涉及到不同的编码标准,如UTF-8、Unicode和GB2312。这些编码方式各有特点,各有应用场景,理解它们有助于在处理中文字符时避免乱码问题。 首先,让我们来详细了解这些...

    UNICODE与UTF-8转换

    UTF-8是一种变长的Unicode转换格式,它将UNICODE码点转换为可变长度的字节序列。UTF-8的优势在于其对ASCII字符的兼容性:英文和其他使用ASCII字符的语言,如大部分编程语言,只需要1个字节表示,这使得UTF-8在互联网...

    GBK 与 UTF-8 间编码转换

    UTF-8(Unicode Transformation Format - 8 bit)是一种基于Unicode的变长字符编码,它可以表示Unicode标准中的所有字符。UTF-8的特点是使用1到4个字节表示一个字符,对于ASCII字符(如英文字符)只用1个字节,而...

    C#写的 GBK GB2312 UTF-8转换

    3. **UTF-8编码**:UTF-8是一种变长的Unicode编码方式,它可以表示Unicode字符集中所有的字符。UTF-8的优点在于对英文字符使用单字节,对于中文等非ASCII字符则使用多个字节,这使得它在互联网上得到了广泛应用,...

    批量转 GBK 转 UTF-8 gb2312 Iso-8959-1 转 UTF-8

    UTF-8(Unicode Transformation Format - 8)是一种变长的Unicode编码,可以表示几乎世界上所有语言的字符。它是目前网络上最常用的字符编码,因为它既能兼容ASCII码,又能表示各种语言的特殊字符,包括中文。 在...

Global site tag (gtag.js) - Google Analytics