`

判断字节数组是否为utf-8编码

 
阅读更多
privatestaticvoidisValidUTF8(byte[]bytes)throwsIllegalStateException...{
intcountToValidate=0;
for(inti=0;i<bytes.length&&countToValidate==0;i++)...{
intb=bytes[i];
if(b>0)...{
continue;//asciichar
}

debugInt(b,
"cur");
while(((b>>6)&0x3)==0x3)...{//checkthe11pattern
countToValidate++;
b
=(b<<1);
debugInt(b,
"cur_c");
i
++;
if(i>bytes.length-1)break;

intnext=bytes[i]&0xff;
debugInt(next,
"next");
if((next>=0x80&&next<0xc0))...{
countToValidate
--;
}

}

}

if(countToValidate>0)
thrownewIllegalStateException();
}


参考:
http://blog.csdn.net/sandyen/archive/2006/08/23/1108168.aspx
http://www.eygle.com/digest/2007/01/zhs16gbk_char.html
http://www.linux-cn.com/html/website/html/20070605/52875.html
分享到:
评论

相关推荐

    java 中文字符串,utf-8编码为byte数组的计算过程

    以下是一个简单的示例,展示了如何将中文字符串转换为UTF-8编码的字节数组: ```java public class Main { public static void main(String[] args) { String chineseStr = "你好,世界"; byte[] bytes = ...

    UCS-2转换为utf-8代码

    该函数首先将输入字符串转换为 UCS-2 字符数组,然后将 UCS-2 字符数组转换为 UTF-8 字符数组,最后将 UTF-8 字符数组转换为输出字符串。 语言处理 在 TStr2UTF8 函数中,还需要处理语言相关的问题,例如繁体、...

    多字节与UTF-8、Unicode之间的转换

    - 再通过`WideCharToMultiByte`函数将宽字符字符串转换为UTF-8编码的字符序列。 2. **UTF8ToMB** 该函数实现了从UTF-8编码转换回多字节编码的过程。其流程与上述过程相反: - 先使用`MultiByteToWideChar`将...

    Utf-8编码与解码(vb6代码)

    - 然后,可以使用`ADODB.Stream`对象将字节数组写入文件,以保存UTF-8编码的文本。 2. **解码过程**: - 读取文件内容到字节数组,可以使用`ADODB.Stream`对象的`Read`方法。 - 确定字节序是否为UTF-8的标志(前...

    C#写的 GBK GB2312 UTF-8转换

    在这个例子中,`Encoding.GetEncoding("GBK")`获取了GBK编码器,`GetBytes()`方法将GBK编码的字符串转换为字节数组,然后`Encoding.UTF8.GetString()`将这个字节数组还原为UTF-8编码的字符串。 对于文件的编码转换...

    VB6.0 UTF-8转换GB2312函数

    在VB6.0编程环境中,有时我们需要处理不同字符编码之间的转换,例如将UTF-8编码的字符串转换为GB2312编码。UTF-8是一种广泛使用的Unicode编码,而GB2312是中国大陆常用的简体中文字符集,主要用于早期的计算机系统。...

    JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    - **Unicode到UTF-8**: 同样以"a 中文"为例,转换为UTF-8编码后,字节数组为`0x61 0xE4 0xB8 0xAD 0xE6 0x96 0x87`。 - **UTF-8到Unicode**: 反向转换后,结果依然是"a 中文"。 ##### 3. Unicode与ISO-8859-1 - **...

    VBA Fans读取和写入UTF-8格式文本文件

    本主题将深入探讨如何使用VBA来读取和写入UTF-8编码的文本文件,这对于处理多语言数据或需要跨系统兼容性的项目尤为重要。 1. **UTF-8编码介绍** UTF-8是一种广泛使用的Unicode字符编码,能够表示Unicode字符集中...

    通过系统api转化UTF-8编码的VB模块源码

    UTF-8编码是一种广泛使用的Unicode编码方式,它具有良好的兼容性和可读性。然而,VB6及其早期版本原生并不支持UTF-8,因此需要借助系统API(应用程序接口)来实现UTF-8与其他编码间的转换。本篇将详细讲解如何通过...

    快速转码(UTF-8转ASCII)

    在上述代码中,我们首先获取了UTF-8和ASCII的`Charset`对象,然后创建了一个UTF-8编码器,并将UTF-8字符串编码为字节数组。由于ASCII只能表示128个字符,所以在转换过程中可能会遇到无法表示的字符,这时我们需要...

    Java避免UTF-8的csv文件打开中文出现乱码的方法

    如果需要兼容多个Excel版本,可以使用UTF-8编码格式,并在文件头部输出BOM,即0xEF 0xBB 0xBF这三个字节。 Java避免UTF-8的csv文件打开中文出现乱码的方法是使用UTF-16LE编码格式,并在文件头部输出BOM。同时,需要...

    GBK与UTF-8转码(C++)

    UTF-8编码最大的优点在于兼容ASCII,并且对于英文等拉丁语系的文字占用较少空间,因此被广泛应用于互联网传输和存储中。 #### 转换原理 在Windows操作系统中,通常使用`MultiByteToWideChar`和`...

    关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    例如,将一个UTF-8编码的字符串转换为Unicode编码的字符串: ```java String utf8Str = "中文"; String unicodeStr = new String(utf8Str.getBytes("UTF-8"), "UTF-8"); ``` #### 6. 示例分析 - **从GBK到ISO-...

    GBK与UTF-8之间的转换

    最后,我们将UTF-8编码的字节添加到fullByte数组中,得到最终的UTF-8编码的字节数组。 GBK与UTF-8之间的转换需要我们了解编码的基本原理和规则,正确地将GBK编码的字符串转换成UTF-8编码的字符串。同时,我们也需要...

    CString转UTF8,UTF8转CString

    - 再次使用`WideCharToMultiByte`函数将宽字符转换为UTF-8编码的多字节字符。 - 最后将转换后的字符数组复制到`CString`对象中。 2. **注意事项**: - 函数使用了动态内存分配(`new`),因此在函数结束前必须...

    C语言字符编码转换UNICODE、GBK、UTF-8互相转换

    例如,从GBK转到UTF-8,只需将GBK的宽字符转换为对应的UTF-8字节序列。 4. **编码**:将Unicode字符数组编码为目标编码。对于GBK,同样需要借助外部库或API;对于UTF-8,你可以手动构建字节序列,遵循UTF-8的规则。...

    delphi操作utf-8转码HTTPEncode

    1. 将UTF-8字符串转换为Unicode字符串:你可以使用`UTF8ToString()`函数将UTF-8编码的字节数组转换为`AnsiString`,然后通过`AnsiToString()`将其转换为`WideString`。 ```delphi var UTF8Bytes: TBytes; Unicode...

    C++ 实现unicode到utf-8的转码

    4. 将生成的UTF-8字节序列写入到字节数组或`std::string`对象中,完成转换。 在提供的"UnicodeTOutf8"文件中,可能包含了一个实现这一过程的C++代码示例。通过分析和理解这个示例,你可以更好地掌握Unicode到UTF-8...

    UTF8转GBK C语言 单片机

    本文主要探讨如何在单片机环境中,使用C语言将UTF-8编码转换为GBK编码,解决在串口通信、TF卡存储或LCD显示时可能出现的中文乱码问题。我们将深入理解UTF-8与GBK编码的原理,并分析基于Keil开发环境的C语言实现过程...

    utf8转gbk-C语言版本.rar

    1. 读取UTF-8编码的字符序列,识别其字节长度。 2. 使用UTF-8的编码规则计算出对应的Unicode码点。 3. 在GBK查表中查找该Unicode码点对应的GBK编码。 4. 将GBK编码写入目标缓冲区。 在实际应用中,可能还需要考虑...

Global site tag (gtag.js) - Google Analytics