中文转unicode

中文转成Unicode编码

筅森魡賤 提交于 2020-02-24 20:04:12
public class Main { public static void main(String[] args) { String uname = "编码"; for (int i = 0; i < uname.length(); i++) { char unamechar = uname.charAt(i); System.out.println(unamechar + "=" + gbEncoding(String.valueOf(unamechar))); } String ucode = "\u7f16\u7801"; System.out.println(ucode); } /** * 把中文转成Unicode编码 * * @param gbString * @return */ private static String gbEncoding(final String gbString) { char[] utfBytes = gbString.toCharArray(); String unicodeBytes = ""; for (int byteIndex = 0; byteIndex < utfBytes.length; byteIndex++) { String hexB = Integer.toHexString(utfBytes[byteIndex])

UTF-8编码规则(转)

ⅰ亾dé卋堺 提交于 2019-12-21 01:11:45
UTF-8编码规则(转) UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode值,至于放在utf-8的编码里去就是由三个字节来组织,所以可以看出unicode是给出一个字符的范围,定义了这个字是码值是多少,至于具体的实现方式可以有多种多样来实现。 UTF-8是一种变长字节编码方式。对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头。UTF-8最多可用到6个字节。 如表: 1字节 0xxxxxxx 2字节 110xxxxx 10xxxxxx 3字节 1110xxxx 10xxxxxx 10xxxxxx 4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 因此UTF-8中可以用来表示字符编码的实际位数最多有31位,即上表中x所表示的位。除去那些控制位(每字节开头的10等),这些x表示的位与UNICODE编码是一一对应的

day2

拜拜、爱过 提交于 2019-11-29 19:18:04
阅读目录 上节拾遗 二进制 字符编码 基本数据类型 回到顶部 上节拾遗 变 量的创建与id 例1:name = 'oldboy' 首先,当我们定义了一个变量name = ‘oldboy’的时候,在内存中其实是做了这样一件事: 程序开辟了一块内存空间,将‘oldboy’存储进去,再让变量名name指向‘oldboy’所在的内存地址。如下图所示: 例 2:两个变量名一个值 提问:当我执行下面这段代码的时候,程序是怎么处理的呢? name1 = 'oldboy' name2 = 'oldboy' 我们猜想会有两种可能: 第一种情况:程序分别在内存中开辟了两块儿空间来存储‘oldboy’这个值,并且让name1和name2指向这两个值。如下左图 第二种情况:由于两个值内容一致,所以程序只开辟一块儿空间存储‘oldboy’,并让name1和name2只想着个值。如下右图 提问:大家来猜测一下会是哪种情况? 其实上面的两种猜想都是对的。正常情况下字符串在内存里就是如我们猜想的第一种情况一样,每一次创建一个变量都会在内存中申请一块儿空间。 但是,python认为一些“看起来像python标识符的字符”和小整数字在开发中是常用的,因此出于节省内存的角度思考,对于这部分字符串和数字做出了优化[-5,257)