Encode编码

Encode编码:

  Java是双字节编码utf-16be,中文占用2个字符,英文占用2个字符。

  项目默认编码是GBK,中文占用2个字符,英文占用1个字符。

  UTF-8编码:中文占用3个字符,英文占用1个字符。

  文本文件就是字节序列,可以是任意编码的字节序六二,编码只是读取的方式,当字节序列是某种编码时,要把字节序列转换成字符串,也要用这种编码的方式,否则会发生乱码。

package com.zhao.encode;

import java.io.UnsupportedEncodingException;

public class Encode {

public static void main(String[] args) throws UnsupportedEncodingException {
String str="慕课ABC";
//转换成字节序列用的是项目默认的编码GBK
byte[] bs=str.getBytes();
for(byte b:bs){
//把字节(转换成了int)以16进制的方式显示
System.out.print(Integer.toHexString(b&0xff)+" ");
}

System.out.println();

//GBK编码:中文占用2个字节,英文占用1个字节。
byte[] bs2=str.getBytes("gbk");
for(byte b:bs2){
System.out.print(Integer.toHexString(b&0xff)+" ");
}

System.out.println();

//UTF-8编码:中文占用3个字节,英文占用1个字节
byte[] bs3=str.getBytes("UTF-8");
for(byte b:bs3){
System.out.print(Integer.toHexString(b&0xff)+" ");
}

System.out.println();

//java是双字节编码 utf-16be
byte[] bs4=str.getBytes("utf-16be");
//utf-16be编码:中文占用2个字节,英文占用高2个字节
for(byte b:bs4){
System.out.print(Integer.toHexString(b&0xff)+" ");
}

/*
* 当你的字节序列是某种编码时,这时候想把字节序列编程字符串,也需要用这种编码方法,否则会出现乱码
* */
String s=new String(bs4);
System.out.println(s);

/*
*文本文件 就是字节序列
*可以是任意编码的字节序列
*如果我们在中文机器上直接创建文本文件,那么该文本文件只认识ANSI编码
* */
}

}

扩展:

  byte字节:一个字节等于8位二进制位,数据存储是以字节byte为单位,数据传输是以为big为单位。

  一个位(bit)代表一个0或者1的二进制数,每八个bit组成一个byte

  1MB=1024KB   1KB=1024B   1B=8bit

  四个bit可以表示一个十六进制位,而1byte=2bit 所以1byte可以转化为2个十六进制位

  0xFF: 0x表示十六进制,F是15,所以是 1111 1111 ,真用8个bit,是一个字节

  byte转化成int ,无论是十六进制 二进制  都是二进制,都是8bit到32bit的过程

  对于32bit的int来说:0xFF 是 00000000 00000000 00000000 11111111

  &0xFF 把前24位(bit)全部清零,便可以得到有效的数据

  Java的二进制采用的是补码形式,

  正数:原码、反码、补码相同

  负数:符号位不变,反码为原码按位取反,补码为反码加一

  8位-1的补码 11111111      32位-1的补码  11111111 11111111 11111111 11111111

  逻辑与& 二者都成立才成立

  按位与运算规则: 0^0=0   0^1=0   1^0=0   1^1=1

时间: 2024-11-09 08:52:36

Encode编码的相关文章

python 编码与解码 decode解码 encode 编码

>>> '无'   #gbk字符'\xce\xde'>>> str1 = '\xce\xde'>>> str1.decode('gbk')  # 解码gbk为 unicodeu'\u65e0'>>> str1.decode('gbk').encode('utf-8') # 解码gbk为 unicode   编码unicode 为utf-8'\xe6\x97\xa0'>>> print str1.decode('gbk

关于java.net.URLEncoder.encode编码问题

Q:java.net.URLEncoder.encode里的编码和什么有关的? A:使用urlencoder编码会将中文变成你在浏览器地址栏看到的%XX形式,至于选择哪种enc编码跟你jvm的default charset有关,因为java项目一般用的都是UTF-8编码,为了防止你的中文以其他编码方式打开的时候乱码(如果这个时候乱码了,你在编码解码也是乱码),推荐整个项目使用同一编码解码,如果你的项目用的是GBK的,那么java.net.URLEncoder.encode("中文.zip&quo

接口调用时对url进行Encode编码

一,对url进行utf-8编码 1)在接口调用中可能会遇到需要对url进行编码与解码问题,在网络上找了相应方法,以提供参考 二,网络上找到的编码与解码工具类 package com.rain.demo; import java.io.UnsupportedEncodingException; public class UTF8{ /** * Utf8URL编码 * @param s * @return */ public static final String Utf8URLencode(Str

x264代码剖析(三):主函数main()、解析函数parse()与编码函数encode()

x264代码剖析(三):主函数main().解析函数parse()与编码函数encode() x264的入口函数为main().main()函数首先调用parse()解析输入的参数,然后调用encode()编码YUV数据.parse()首先调用x264_param_default()为保存参数的x264_param_t结构体赋默认值:然后在一个大循环中通过getopt_long()解析通过命令行传递来的存储在argv[]中的参数,并作相应的设置工作:最后调用select_input()和sele

关于Python字符编码encode和decode

(注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 记得几天前,部门的一个小姑娘问我,怎么她Python打印出来的中文信息都乱码了?我走过去,略思一二,瞬间给她搞定,其实这是字符编码转换的问题.这时,我注意到小姑娘流露出一丝丝崇拜的眼神.所以我想,如果你连编码问题都搞不定,还怎么泡妞啊.可能一部分人也会进入这种误区,我以我小学生的水平,把我的理解结合网上的资料写下来. 注意:Python3默认编码是unicode:而Python2是ASCII码.Windows环境默认是g

编码-encode,decode

编码:decode:解码:把一种编码转换成unicodeencode:编码:把unicode转换成其他编码gbk -> utf-8 ? xxgbk -> unicode -> utf-8gbk.decode('gbk').encode('utf-8')例子:翻译水平汉语 -> 英语 英语 -> 汉语日语 -> 英语 英语 -> 日语 汉语 -> 日语汉语 -> 英语 -> 日语

python 编码(encode)解码(decode)问题

s = '匆匆'print(s)s1 = s.decode("utf-8") # utf-8 转成 Unicode,decode(解码)需要注明当前编码格式print(s1,type(s1)) s2 = s1.encode("gbk") # unicode 转成 gbk,encode(编码)需要注明生成的编码格式print(s2,type(s2)) s3 = s1.encode("utf-8") # unicode 转成 utf-8,encode

Python中编码的详细讲解

看这篇文章前,你应该已经知道了为什么有编码,以及编码的种类情况 ASCII 占1个字节,只支持英文 GB2312 占2个字节,支持6700+汉字 GBK GB2312的升级版,支持21000+汉字 Shift-JIS 日本字符 ks_c_5601-1987 韩国编码 TIS-620 泰国编码 由于每个国家都有自己的字符,所以其对应关系也涵盖了自己国家的字符,但是以上编码都存在局限性,即:仅涵盖本国字符,无其他国家字符的对应关系.应运而生出现了万国码,他涵盖了全球所有的文字和二进制的对应关系, U

客户端编码与服务器解码全过程

form有2中方法把数据提交给服务器,get和post,分别说下吧. (一)get提交   1.首先说下客户端(浏览器)的form表单用get方法是如何将数据编码后提交给服务器端的吧.        对于get方法来说,都是把数据串联在请求的url后面作为参数,如:http://localhost:8080/servlet?msg=abc (很常见的一个乱码问题就要出现了,如果url中出现中文或其它特殊字符的话,如:http://localhost:8080/servlet?msg=杭州,服务器