Java基础之字符串的编码(Encode)和解码(Decode)

5 篇文章 0 订阅


package newFeatures8;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

/*
 * 编码(由看得懂到看不懂):字符串变字节数组
 * 解码(由看不懂到看得懂):字符数组变字符串
 * String--》byte[];//str.getBytes();//str.getBytes(String CharsetName);
 * byte[]--》String;//new String(byte[] bytes)//new String(byte[] bytes,String CharsetName);
 */


public class Practice {

	public static void main(String[] args) {
		try {
			  String s="你好";
			  //ISO-8859-1  根本就不识别中文
			  
			 // byte[] bytes=s.getBytes("gbk");
			 //  System.out.println(Arrays.toString(bytes));//[-60, -29, -70, -61]
			  
			  //使用utf-8 编码每个字符占3个字节
			  //byte[] bytes=s.getBytes("utf-8");
			 // System.out.println(Arrays.toString(bytes));//[-28, -67, -96, -27, -91, -67]
			  
			 //  String s1=new String(s.getBytes("utf-8"), "gbk");//浣犲ソ
			  
			  // String s1=new String(s.getBytes("gbk"), "utf-8");//???
			  
			  //当网页已经出现乱码,而使用的Tomcat服务器,Tomcat服务器使用的是ISO-8859-1 只需要再编码解码即可
			   String s1=new String(s.getBytes("ISO-8859-1"), "utf-8");
			   System.out.println(s1);
			   //一般要养成一个习惯:就是全部用utf-8
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
	 
	}
	
	

}

package newFeatures8;

import java.io.UnsupportedEncodingException;

public class Practice {
	public static void main(String[] args) throws UnsupportedEncodingException {
		getLowest8Bit();
	}
	/*
	 * 通过研究发现:当往记事本里写入"联通"两字时,保存后打开,发现出现乱码
	 * 原因是:当你写入中文时:记事本使用的是GBK(按照一个字符两个字节)编码
	 *  ,当你打开记事本时,使用的是UTF-8(按照一个字符3个字节)解码
	 *  如何解决:只要在联通前加个汉字即可,不能是字母
	 *  
	 *  "联通"二字比较特殊
	 *  其二进制数的最低8位刚好符合UTF-8的解码格式
	 */
	public static void getLowest8Bit() throws UnsupportedEncodingException{
		String s="联通";
		byte[] bytes=s.getBytes("gbk");
		for (byte b : bytes) {
			//System.out.println(Integer.toBinaryString(b));
			/*
			    11111111111111111111111111000001
				11111111111111111111111110101010
				11111111111111111111111111001101
				11111111111111111111111110101000
			 */
			//通过使用  与上  &0xff 来获取其最低最低8位  0xff=255
			System.out.println(Integer.toBinaryString(b&0xff));
			/*
			 *  11000001
				10101010
				11001101
				10101000
			 */
			//匹配到了utf-8 的标志位
			//一个字节 标志位0打头
			//两个字节 :第一个字节110打头,第二个字节10打头
			//三个字节:第一个字节1110打头,第二个字节10打头,第三个字节10打头
		}
	}
	
}


  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Python中的字符串编码解码可以通过encode()和decode()方法来实现。这两个方法都是字符串对象的方法,用于将字符串从一种编码格式转换为另一种编码格式。 encode()方法可以将字符串编码为指定的编码格式,其语法为: ```python string.encode(encoding=编码格式, errors=错误处理) ``` 其中,encoding参数是必须的,用于指定要使用的编码格式,errors参数是可选的,用于指定错误处理方式。如果不指定errors参数,则默认使用strict模式,即如果存在无法编码的字符,则会抛出UnicodeError异常。 例如,将一个字符串编码为UTF-8格式: ```python string = "Hello World" encoded_string = string.encode(encoding="utf-8") print(encoded_string) ``` 输出结果为:b'Hello World'。其中,b表示这是一个字节串对象,而不是字符串对象。 decode()方法可以将字节串解码为指定的编码格式,其语法为: ```python bytes.decode(encoding=编码格式, errors=错误处理) ``` 其中,encoding参数是必须的,用于指定要使用的编码格式,errors参数是可选的,用于指定错误处理方式。如果不指定errors参数,则默认使用strict模式,即如果存在无法解码的字节,则会抛出UnicodeError异常。 例如,将一个UTF-8格式的字节串解码字符串: ```python bytes_string = b'Hello World' decoded_string = bytes_string.decode(encoding="utf-8") print(decoded_string) ``` 输出结果为:Hello World。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值