Java中的编码问题

news/2024/7/7 18:57:55

一、各种编码所占的字节空间:

      gbk编码:        中文占 2 个字节,英文占 1 个字节;   Java中项目的默认编码方式;

      utf-8编码:      中文占  3个字节,英文占 1 个字节;

      utf-16be编码:中文占 2个字节,英文占  2 个字节;   Java是utf-16be编码


二、当你的字节序列是某种编码方式时,这个时候想把字节序列变成字符串时,

       也需要该种编码方式,否则会出现乱码;


三、文本文件就是字节序列,可是是任意编码方式,但如果我们在中文机器上直接穿件文本文件,那么该文本文件只认        识ANSI编码的文件。

    

       有兴趣的小伙伴们可以尝试在自己的机器上新建 联通.txt  文本文件,里面内容也为“联通”,以及  联.txt   文本文件,里面内容为“联”,再次新建  联想.txt  文本文件,里面内容为“联想”;保存,然后打开,看看有谁变成了乱码,真的非常有趣。选择文件菜单,另存为选项,观察编码方式的不同;


四、简单的代码演示:


package com.bluesky;

public class EnCode {
	
	public static void main(String[] args) throws Exception {
		String s ="蓝天abc";
		byte [] byte1 = s.getBytes();//项目默认为gbk编码
		for(byte b:byte1){
			System.out.print( Integer.toHexString(b & 0xff)+" ");
		}
		
		System.out.println();
		
		byte [] byte2 =s.getBytes("gbk");//gbk编码中文占两个字节,英文占一个字节,项目默认
		for(byte b:byte2){
			System.out.print( Integer.toHexString(b & 0xff)+" ");
		}
		
		System.out.println();
		//utf-8编码中文占三个字节,英文占一个字节
		byte [] byte3 =s.getBytes("utf-8");
		for(byte b :byte3){
			System.out.print(Integer.toHexString(b & 0xff)+" ");
		}
		//java是双字节编码,utf-16be编码,中文占用两个字节,英文占用两个字节
		System.out.println();
		byte [] byte4 =s.getBytes("utf-16be");
		for(byte b :byte4){
			System.out.print(Integer.toHexString(b & 0xff)+" ");
		}
		//当你的字节序列是某种编码时,这个时候想把字节序列变成字符串时,也需要用这种形式编码
		//否则会出现乱码
		System.out.println();
		String str = new String(byte4);//采用项目默认编码
		System.out.println(str);
		
		String str1 = new String(byte4,"utf-16be");//指定为utf-16be编码
		System.out.println(str1);
	}

}


运行结果:





http://www.niftyadmin.cn/n/2219414.html

相关文章

Java中文件的遍历

一、File类的简单用法以及注意事项: 1.File类只用于表示文件的信息,大小,不能用于文件的访问; 2.注意区分文件和目录;文件一般带有明显是后缀,如.txt文件,.doc文件等;二目录一般是…

HTML5 Canvas与localStorage简单应用

Canvas 是HTML5的一大2d图形处理利器,localStorage是本地存储,它有一个很有意思的API,类似于观察者模型的事件storage事件,一者本地存储发生改变,它会响应注册了storage事件的所有窗口。 这样当我们在其中一个窗口的Canvas中画东西…

c与python哪个简单_Python与C的简单比较(Python3.0)

Python可以说是目前最火的语言之一了,人工智能的兴起让Python一夜之间变得家喻户晓,Python号称目前最最简单易学的语言,现在有不少高校开始将Python作为大一新生的入门语言。本萌新也刚开始接触Python,发现Python与其他语言确实有…

Java中自定义异常的使用

Java中的自定义异常的使用步骤&#xff1a; 1.定义异常&#xff0c;并继承Exception&#xff0c;分别构造无参函数和有参构造函数&#xff0c;并在构造函数中分别调用父类的无参构造函数和有参构造函数 <span style"font-size:18px;">package com.bluesky;pub…

服务器管理Linux经典命令

1.站点根目录下查找是否被放置webshell***根据语句判断是不是PHP***脚本 # find /storage/www/ -name "*.php" | xargs grep -in --color "eval(" # grep -i --include*.php -r system\s*\( /storage/www/ 2.统计访问日志中来自同ip出现的次数分析盗链、**…

Java中应用Collections工具类的Sort()方法对List进行排序

一、Sort排序方法的使用&#xff1a; 1.对Integer类型进行排序 (该类型已经实现Comparable接口) 2.对String类类型进行排序 (该类型已经实现Comparable接口) 3.对其他类型进行排序 (需要自己实现Comparable接口) 二、Comparable接口和Comparator接口的比较&am…

make的常见错误信息

本文对make执行时可能出现常见错误进行汇总、分析&#xff0c;并给出修正的可能方法。 make执行过程中所产生错误并不都是致命的&#xff1b;特别是在命令行之前存在“-”、或者make使用“-k”选项执行时。make执行过程的致命错误都带有前缀字符串“***”。 错误信息都有前缀&a…

Java中文件的拷贝

一、字节流的基本知识&#xff1a; 1.输入流&#xff1a;InputStream &#xff08;in &#xff09; 输出流&#xff1a;OutputStream &#xff08;out&#xff09; 2.输入流的基本方法&#xff1a; *int b in.read(); //读取一个字节 *…