字节unicode编码和utf8 UTF-8到Unicode的编码转换

unicode编码转换  时间:2021-04-12  阅读:()

导读就爱阅读网友为您分享以下“UTF-8到Unicode的编码转换”资讯希望对您有所帮助感谢您对92to.com的支持!

UTF-8就是Unicode Transfo rmation Format-8是Unicode的一种变换编码格式。

U TF-8有以下特性:

UCS字符U+0000到U+007F (ASCII)被编码为字节0x00到0x7F(ASCII兼容).这意味着只包含7位ASCII字符的文件在ASCII和UTF-8两种编码方式下是一样的.

所有>U+007F的UCS字符被编码为一个多个字节

1

的串,每个字节都有标记位集. 因此, ASCII字节(0x00-0x7F)不可能作为任何其他字符的一部分.

表示非ASCII字符的多字节串的第一个字节总是在0xC0到0 xF D的范围里,并指出这个字符包含多少个字节.多字节串的其余字节都在0 x80到0 xB F范围里.这使得重新同步非常容易,并使编码无国界,且很少受丢失字节的影响.

可以编入所有可能的231个UCS代码

U TF-8编码字符理论上可以最多到6个字节长,然而16位B MP字符最多只用到3字节长.

Bigendian UCS-4字节串的排列顺序是预定的.

字节0 xF E和0 xF F在U TF-8编码中从未用到.

下列字节串用来表示一个字符.用到哪个串取决于该字符在Unicode中的序号.

U-00000000-U-0000007F:

2

0 x xx x xx x

U-00000080-U-000007FF:

U-00000800-U-0000FFFF:

U-00010000-U-001FFFFF:

U-00200000-U-03FFFFFF:

U-04000000-U-7FFFFFFF:

110xxxxx 10xxxxxx 1110xxxx 10xxxxxx 10xxxxxx11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 111110xx10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 1111110x10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx10xxxxxx

从上表还可以看出 U TF-8每个编码字符都不可能以“10”开头 “10”是以连接符的形式出现在后面的编码字节开头。因此U TF-8编码在存储和传输时是不容易出错的。

下面是UTF-8到Unic o de的编码转换代码(J2 ME环境下的实现) UTFC2UniC方法包含了编码转换逻辑。

/**

3

*将U TF-8字节数据转化为Unic o de字符串

*@pa ra m utf_data byte[] -UTF-8编码字节数组

*@pa ra m le n int-字节数组长度

*@return String-变换后的Unicode编码字符串

*/public static String UTF2Uni(byte[] utf_data, int len){

StringBuffer unis=new StringBuffer();char unic=0;int ptr=0;int cntBits=0;fo r(;pt r< le n;)

{cntBits=getC ntBits(utf_data[ptr]);if(c ntB it s==-1)

{

4

++ptr;continue;

}e ls eif(c ntB it s==0)

{unic = UTF C2UniC(utf_data, ptr, cntBits);++ptr;

}e ls e

{unic = UTF C2UniC(utf_data, ptr, cntBits);ptr+=cntBits;

}unis.append(unic);

}return unis.toString();

}

/**

5

*将指定的UTF-8字节组合成一个Unic o de编码字符

*@param utf byte[] -UTF-8字节数组

*@param sptr int-编码字节起始位置

*@param cntBits int-编码字节数

*@return char-变换后的Unicode字符

*/public static char UTFC2UniC(byte[] utf, int sptr, intcntBits)

{

/*

U nico de<->U TF-8

U-00000000-U-0000007F: 0 xxxx x xx

U-00000080-U-000007FF: 110xxxxx 10xxxxxx

6

U-00000800-U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx

U-00010000-U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx10 xxx x xx

U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx10xxxxxx 10xxxxxx 10xxxxxx

U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

*/int uniC=0; // represent theunicode char byte firstByte=utf[sptr];int ptr=0; // pointer 0~15

//resolve single byte UTF-8 encoding charif(c ntB it s==0)return(char)firstByte;

//resolve the first byte

7

firstByte&=(1<< (7-c ntBits)) - 1;

// resolve multiple bytes UTF-8 encoding char(except thefirst byte)fo r(int i=sptr+c ntBits -1; i> sptr; --i)

{byte utfb=utf[i];uniC|=(utfb&0x3 f)<<ptr;ptr+=6;

}uniC|=firstByte<<ptr;return(char)uniC;

}

//根据给定字节计算U TF-8编码的一个字符所占字节数

//U TF-8规则定义字节标记只能为0或2~6private static int getCntBits(byte b)

{int cnt=0;

8

if(b==0)re t u rn-1;for(int i=7; i>=0; --i)

{if(((b&g t;&g t; i)&0 x 1)==1)

++c nt;e ls ebreak;

}return(c nt>6| |c nt==1)?-1 : c nt;

}

参考资料

《 UTF-8 and Unicode FAQ 》 ——http://www.linuxfo rum.net/books/UTF-8-Unicode.html

百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网92to.com,您的在线图书馆

9

Hostodo:$34.99/年KVM-2.5GB/25G NVMe/8TB/3个数据中心

Hostodo在九月份又发布了两款特别套餐,开设在美国拉斯维加斯、迈阿密和斯波坎机房,基于KVM架构,采用NVMe SSD高性能磁盘,最低1.5GB内存8TB月流量套餐年付34.99美元起。Hostodo是一家成立于2014年的国外VPS主机商,主打低价VPS套餐且年付为主,基于OpenVZ和KVM架构,美国三个地区机房,支持支付宝或者PayPal、加密货币等付款。下面列出这两款主机配置信息。CP...

Nocser:马来西亚独立服务器促销$60.00/月

Nocser刚刚在WHT发布了几款促销服务器,Intel Xeon X3430,8GB内存,1TB HDD,30M不限流量,月付$60.00。Nocser是一家注册于马来西亚的主机商,主要经营虚拟主机、VPS和马来西亚独立服务器业务,数据中心位于马来西亚AIMS机房,线路方面,AIMS到国内电信一般,绕日本NTT;联通和移动比较友好,联通走新加坡,移动走香港,延迟都在100左右。促销马来西亚服务器...

云俄罗斯VPSJusthost俄罗斯VPS云服务器justg:JustHost、RuVDS、JustG等俄罗斯vps主机

俄罗斯vps云服务器商家推荐!俄罗斯VPS,也叫毛子主机(毛子vps),因为俄罗斯离中国大陆比较近,所以俄罗斯VPS的延迟会比较低,国内用户也不少,例如新西伯利亚机房和莫斯科机房都是比较热门的俄罗斯机房。这里为大家整理推荐一些好用的俄罗斯VPS云服务器,这里主要推荐这三家:justhost、ruvds、justg等俄罗斯vps主机,方便大家对比购买适合自己的俄罗斯VPS。一、俄罗斯VPS介绍俄罗斯...

unicode编码转换为你推荐
themesgooglewordpress模板wordpress模板和主题是一个概念么复制党,广告党绕路重庆电信断网重庆电信的最近是怎么回事啊!老断网邮件esetyixingjia报价是什么意思加多宝和王老吉王老吉和加多宝的关系?购物车在超市、商场中为什么需要使用购物车呢?账号通网易手机账号通密码忘了怎么办管理员密码请输入管理员密码什么意思邮件管理系统哪个邮件管理软件好?
手机域名注册 上海vps godaddy域名解析 cdn服务器 抢票工具 win8.1企业版升级win10 牛人与腾讯客服对话 福建天翼加速 ftp教程 老左正传 海外空间 国外的代理服务器 中国电信测速网站 好看的空间 防盗链 qq部落24-5 西部数码空间购买 好看的空间图片 灵动:鬼影实录4 自住型商品房申请网站 更多