package test.wingware;
public class UnicodeToUTF8 {
private static final int MASKBITS = 0x3F;
private static final int MASKBYTE = 0x80;
private static final int MASK2BYTES = 0xC0;
private static final int MASK3BYTES = 0xE0;
// private static final int MASK4BYTES = 0xF0;
// private static final int MASK5BYTES = 0xF8;
// private static final int MASK6BYTES = 0xFC;
/** */
/**
* @功能: 将UNICODE(UTF-16LE)编码转成UTF-8编码
* @参数: byte[] b 源字节数组
* @返回值: byte[] b 转为UTF-8编码后的数组
* @作者: imuse
*/
public static byte[] UNICODE_TO_UTF8(byte[] b) {
int i = 0;
int j = 0;
byte[] utf8Byte = new byte[b.length * 2];
while (i < b.length) {
byte[] bUTF = new byte[1];
int nCode = (b[i] & 0xFF) | ((b[i + 1] & 0xFF) << 8);
if (nCode < 0x80) {
bUTF = new byte[1];
bUTF[0] = (byte) nCode;
}
// 110xxxxx 10xxxxxx
else if (nCode < 0x800) {
bUTF = new byte[2];
bUTF[0] = (byte) (MASK2BYTES | nCode >> 6);
bUTF[1] = (byte) (MASKBYTE | nCode & MASKBITS);
}
// 1110xxxx 10xxxxxx 10xxxxxx
else if (nCode < 0x10000) {
bUTF = new byte[3];
bUTF[0] = (byte) (MASK3BYTES | nCode >> 12);
bUTF[1] = (byte) (MASKBYTE | nCode >> 6 & MASKBITS);
bUTF[2] = (byte) (MASKBYTE | nCode & MASKBITS);
}
for (int k = 0; k < bUTF.length; k++) {
utf8Byte[j++] = bUTF[k];
}
i += 2;
}
b = new byte[j];
System.arraycopy(utf8Byte, 0, b, 0, j);
return b;
}
/** */
/**
* @功能: 将一个长度为2 byte数组转为short
* @参数: byte[] bytesShort要转的字节数组
* @返回值: short sRet 转后的short值
*/
public static short bytesToShort(byte[] bytesShort) {
short sRet = 0;
sRet += (bytesShort[0] & 0xFF) << 8;
sRet += bytesShort[1] & 0xFF;
return sRet;
}
/** */
/**
* @功能: 将一个short值转为byte数组
* @参数: short sNum 要转的short值
* @返回值: byte[] bytesRet 转后的byte数组
*/
public static byte[] shortToBytes(short sNum) {
byte[] bytesRet = new byte[2];
bytesRet[0] = (byte) ((sNum >> 8) & 0xFF);
bytesRet[1] = (byte) (sNum & 0xFF);
return bytesRet;
}
/** */
/**
* @功能: 将一个长度为4 byte数组转为int
* @参数: byte[] bNum要转的字节数组
* @返回值: int retInt 转后的int值
*/
public static int bytesToInt(byte[] bNum) {
int retInt = 0;
retInt = ((bNum[0] & 0xFF) << 24);
retInt += (bNum[1] & 0xFF) << 16;
retInt += (bNum[2] & 0xFF) << 8;
retInt += bNum[3] & 0xFF;
return retInt;
}
/** */
/**
* @功能: 将一个int值转为byte数组
* @参数: int nNum 要转的int值
* @返回值: byte[] bytesRet 转后的byte数组
*/
public static byte[] intToBytes(int nNum) {
byte[] bytesRet = new byte[4];
bytesRet[0] = (byte) ((nNum >> 24) & 0xFF);
bytesRet[1] = (byte) ((nNum >> 16) & 0xFF);
bytesRet[2] = (byte) ((nNum >> 8) & 0xFF);
bytesRet[3] = (byte) (nNum & 0xFF);
return bytesRet;
}
}
分享到:
相关推荐
### Java程序转码(UTF-8):详细解析与实现 #### 一、引言 在处理文本数据时,字符编码是一项重要的技术基础。不同系统、不同语言环境下的字符编码可能不一致,这就需要进行字符编码转换以确保数据正确显示和处理...
1. UTF-8 to UNICODE:UTF-8编码的字符串需要解码为UNICODE,首先解析每个字节序列以确定字符的长度,然后根据字节顺序转换成16位的UNICODE值。 2. UNICODE to UTF-8:相反,我们需要将每个UNICODE字符转换为相应的...
delphi7调用delphi2009生成的dll文件会出现乱码问题。是unicode的原因 终于找到了UTF-8、Unicode格式转换函数
本文将深入探讨如何使用Java工具将GBK编码的文件夹批量转换为UTF-8编码,同时支持文件名的转换。 首先,GBK是中国大陆广泛使用的汉字编码标准,它兼容GB2312,能够表示大部分中文字符。然而,GBK不支持Unicode,这...
UTF-8则是一种变长的Unicode编码方式,可以表示世界上几乎所有的字符集,包括GBK中的所有字符。在Eclipse中,如果你的源代码或资源文件是GBK编码,而Eclipse的工作空间设置为UTF-8,就可能出现乱码。 解决Eclipse中...
UTF-8是目前最常用的Unicode编码方式,能够准确无误地表示各种语言字符,包括中文。确保在不同平台和语言之间进行数据交换时,中文字符的处理一致性。 总之,ASP HMAC-SHA256加密方案为ASP开发者提供了一种安全的、...
UTF-8是一种广泛使用的Unicode编码,几乎支持全球所有语言的字符,包括中文。在处理多语言环境或者需要国际化的应用时,UTF-8是首选的编码方式,因为它能确保数据的一致性和兼容性。 GBK是针对中文的一种扩展ASCII...
这个"完整版如何将文本转换为UTF-8码 .e.rar"压缩包文件很可能包含了一个详细的教程或工具,教你如何将文本文件从其他编码格式转换为UTF-8编码。 首先,我们需要理解什么是UTF-8。UTF,全称为Unicode ...
本文将深入探讨四个关键的字符编码标准:UTF-16、UTF-8、ASCII和Unicode,以及它们之间的转换方法。 首先,Unicode是一个字符集,包含了世界上几乎所有的文字系统,为每个字符分配了一个唯一的数字,称为码点。它...
2. **Unicode到UTF-8的转换**:接下来将Unicode编码的字符串转换为UTF-8编码,以便在网络上传输。 3. **URL编码**:最后对UTF-8编码后的字符串进行URL编码,确保其可以在URL中安全传输。 #### 五、具体实现 下面...
这段代码会递归遍历指定的`directory`,找到所有后缀为`.txt`, `.py`, `.java`, `.js`, `.html`的文件,读取它们的内容,假设它们是GBK编码,然后解码为Unicode,再编码为UTF-8并写回文件。同时,`utf-8-sig`编码器...
总的来说,这个名为toUnicode的小型软件提供了一个方便的界面,让用户能够轻松地将文本转换为Unicode编码的不同形式,特别是UTF-16LE、UTF-16BE和UTF-8。对于开发者、文本编辑者或需要处理多种语言文本的用户来说,...
本文将深入探讨“UNICODE_2.00_编码转换.rar”文件所涉及的编码概念,包括Text、ANSI、Unicode、UCS-2、UTF-8以及UTF-7,并解释如何进行汉字转UCS-2格式的转换。 1. **Text编码**:在计算机早期,"Text"通常指基于...
JavaScript 使用 Unicode 编码来表示字符串,而 Unicode 编码可以是 utf-16 或 utf-8 等多种编码方式。 在 JavaScript 中,我们可以使用 encodeURIComponent() 函数来实现 Base64 编码,但是这只能对 ASCII 字符串...
例如,UTF-8的BOM是三个字节(0xEF, 0xBB, 0xBF),而UTF-16LE和UTF-16BE的BOM分别是两个字节(0xFF, 0xFE)和(0xFE, 0xFF)。虽然UTF-8的BOM在很多情况下不是必须的,但有些软件可能会在创建文件时默认添加。 在...
在示例中,字符“·”(MIDDLE DOT,Unicode U+00B7)在UTF-8编码下应为"C2 B7",但在ISO-8559-1编码下仅表示为"B7"。由于HTTP请求默认使用ISO-8859-1编码,当客户端未明确指定编码时,async-http库会按照此编码格式...
### Java UTF-8 转 GB2312 的实现方法及原理 #### 一、引言 在处理中文字符编码转换时,我们经常会遇到不同的编码格式,如 UTF-8 和 GB2312。这两种编码方式在中国互联网环境中非常常见。UTF-8 是一种可变长度的...
3. **UTF-8编码**:UTF-8是一种可变长度的Unicode编码方式,支持世界上几乎所有语言的文字,包括中文。UTF-8的最大特点是兼容ASCII,且对于英文字符只需要一个字节,因此在网络传输中非常高效。 #### 二、乱码问题...
GBK编码是中国大陆广泛使用的汉字编码标准,而UTF-8则是国际上最普遍的Unicode编码格式。本主题聚焦于如何将GBK编码的文本转换为UTF-8编码,特别关注Java编程语言中的实现方法。 GBK编码是GB2312编码的扩展,包含了...