`

java utf16 encoding

    博客分类:
  • java
 
阅读更多
Unicode的码空间从U+0000到U+10FFFF
UTF16分为17个多文种平面(multilingual plane),其中基本多文种平面的范围是0x0000-0xFFFF,其他的成为辅助文本平面.
基本多文种平面的每个编码对应一个字符,或称作代码元,特殊的情况是:
U+D800到U+DFFF之间的码位区段是永久保留不映射到字符,因此UTF-16利用保留下来的0xD800-0xDFFF区段的码位来对辅助平面的字符的码位进行编码。

从u+10000到u+10ffff的码位
辅助平面(Supplementary Planes)中的码位,在UTF-16中被编码为一对16比特长的码元(即32bit,4Bytes),称作 code units called a 代理对(surrogate pair), 具体方法是:
    码位减去0x10000, 得到的值的范围为20比特长的0..0xFFFFF.
    高位的10比特的值(值的范围为0..0x3FF)被加上0xD800得到第一个码元或称作高位代理(high surrogate), 值的范围是0xD800..0xDBFF. 由于高位代理比低位代理的值要小,所以为了避免混淆使用,Unicode标准现在称高位代理为前导代理(lead surrogates).
    低位的10比特的值(值的范围也是0..0x3FF)被加上0xDC00得到第二个码元或称作低位代理(low surrogate), 现在值的范围是0xDC00..0xDFFF. 由于低位代理比高位代理的值要大,所以为了避免混淆使用,Unicode标准现在称低位代理为后尾代理(trail surrogates).






由于高位代理、低位代理、BMP中的有效字符的码位,三者互不重叠,搜索是简单的: 一个字符编码的一部分不可能与另一个字符编码的不同部分相重叠。这意味着UTF-16是自同步(self-synchronizing): 可以通过仅检查一个码元就可以判定给定字符的下一个字符的起始码元. UTF-8也有类似优点,但许多早期的编码模式就不是这样,必须从头开始分析文本才能确定不同字符的码元的边界.(这是因为所有从u+10000到u+10ffff的码位全都表示成了一对16比特长的码元,而前一个码元落在0xD800..0xDBFF,后一个码元落在0xDC00..0xDFFF.所以,只要你发现有一个码元处于0xD800..0xDfFF,那么这个码元一定是UTF16编码的一个部分,而且你能确定他是高位代理或者是低位代理.)
分享到:
评论

相关推荐

    转换编码java程序(encoding)

    本程序可以将电脑存的UTF-8编码转换为任意你需要的编码

    utf8 encoding

    4. **编程语言**:许多编程语言如Python、Java等支持UTF-8编码,使得开发者能够轻松地处理多语言文本。 #### 六、总结 UTF-8作为一种高效的字符编码方案,在互联网时代得到了广泛应用。它不仅兼容ASCII码,还能够...

    Java解决UTF-8的BOM问题

    在Java编程中,UTF-8编码是一个非常常见且广泛使用的字符编码格式,它能支持全球大部分语言的字符表示。然而,UTF-8有一个特殊特性,那就是它可以带有Byte Order Mark(BOM),这是一个特殊的字节序列,用于标识数据...

    java utf8 to gb2312

    ### Java UTF-8 转 GB2312 的实现方法及原理 #### 一、引言 在处理中文字符编码转换时,我们经常会遇到不同的编码格式,如 UTF-8 和 GB2312。这两种编码方式在中国互联网环境中非常常见。UTF-8 是一种可变长度的...

    ChangeEncoding:批量更改文件编码,现在支持GBK,UTF8,UTF-16LE,UTF-16BE,Java

    change file encoding in batches, now support UTF-8,GBK,UTF-16LE,UTF-16BE, Java java -Dfile.encoding=utf-8 -mx1000m -jar ChangeEncoding-1.0.jar inputPath outPath in_encoding out_encoding in_encoding 是...

    CodeDetector:检测文件编码,现在支持UTF-8,GBK,UTF-16LE,UTF-16BE,Java

    CodeDetectorDetect File encoding, Now support UTF-8,GBK,UTF-16LE,UTF-16BE, Java检查文件编码,主要针对中文文本。目前支持 UTF-8(BOM或无BOM)、GBK、UTF-16LE、UTF-16BE单个文件或文件夹,支持编码批量转换。...

    Java 程序转码(UTF-8)

    ### Java程序转码(UTF-8):详细解析与实现 #### 一、引言 在处理文本数据时,字符编码是一项重要的技术基础。不同系统、不同语言环境下的字符编码可能不一致,这就需要进行字符编码转换以确保数据正确显示和处理...

    批量将Java源代码文件的编码从GBK转为UTF-8

    老项目采用GBK编码格式,而新项目采用的UTF-8编码格式,如果直接把Java源代码复制到Eclipse中所有的中文信息会出现乱码。所以写了个小的方法类,将java文件的编码格式从GBK转UTF-8

    Java 文件编码转换,将项目下的java文件编码由gbk与utf-8互转

    *文件编码转换,gbk与utf-8互转 * changeFileCode 方法,4个属性:(需要转换的文件目录,转换后的文件目录,当前文件编码格式,转换成需要的文件编码); * 需要转换的文件目录,转换后的文件目录--可以为同一路径...

    java 编码 UTF-8、ISO-8859-1、GBK

    可以通过 `-Dfile.encoding=UTF-8` 参数来设定JVM的默认编码。 对于JSP,由于它涉及到网页的显示,处理中文字符会更复杂。当从数据库读取数据时,需要根据数据库的编码进行适当的转换。例如,如果数据库是UTF-8,...

    java类自动转为UTF8编码

    如果之前项目类用的编码不统一,或有的是GBK.或是其他的,要一次性转为UTF8编码,又不想造成乱码,直接用本代码即可转换

    c# java互相转换工具

    标题中的"C# Java互相转换工具"指的是一个软件或库,旨在帮助开发者在C#和Java之间进行代码迁移或互操作。这个工具可能是为了方便那些在两个不同平台间工作或者需要跨语言共享代码的开发人员。从描述中的链接来看,...

    简单的UTF-8与GBK之间相互转码工具

    这个名为`encoding_p.java`的Java源代码文件,应该包含了一个简单的类或函数,用于实现文件从GBK到UTF-8,以及从UTF-8到GBK的转换。在Java中,我们可以使用`java.nio.charset`包中的`Charset`和`CharsetDecoder`、`...

    java 中file.encoding的设置详解

    Java会根据`file.encoding`属性来确定默认的字符集,例如ISO-8859-1或UTF-8。这个属性的值可以在JVM启动时通过命令行参数 `-Dfile.encoding="charset_name"` 来设定,其中`charset_name`是想要使用的字符集名称。...

    utf8转GB2312

    byte[] gb2312Bytes = Encoding.Convert(Encoding.UTF8, gb2312Encoding, utf8Bytes); // 将GB2312字节转换回字符串 string gb2312String = gb2312Encoding.GetString(gb2312Bytes); ``` 这个过程首先将UTF-8字符...

    解决Invalid byte 1 of 1-byte UTF-8 sequence

    1. "修改catalina.bat中的JAVA_OPTS -Dfile.encoding=UTF8.png":这表明了解决方案可能涉及修改Tomcat的启动脚本`catalina.bat`,通过设置`JAVA_OPTS`环境变量,指定`-Dfile.encoding=UTF8`来确保Java虚拟机(JVM)...

    某编码的文本文件批量转码为UTF8工具及java代码

    java -jar "encoding.jar" the first is the directory store your initial files in any encoding style the second is the directory you want to store the new files the third is the encoding name of your ...

    【源代码】明解Java-UTF-8.rar

    7. 编译器参数:Java编译器`javac`支持`-encoding`选项,可以指定源代码文件的编码格式,确保编译过程中的正确解析。 通过分析这些源代码,初学者可以了解到如何在实际项目中应用UTF-8编码,同时加深对Java语言特性...

Global site tag (gtag.js) - Google Analytics