JAVA 中汉字在不同编码下的字节不同

*/
utf-8中文字节长度:6
utf-16中文字节长度:6
UTF-16BE中文字节长度:4
UTF-16LE中文字节长度:4
UTF-32中文字节长度:8
UTF-32BE中文字节长度:8
UTF-32LE中文字节长度:8
unicode中文字节长度:6
GBK中文字节长度:4
GB2312中文字节长度:4
GB18030中文字节长度:4
ISO8859-1中文字节长度:2
BIG5中文字节长度:3
ASCII中文字节长度:2

-------------------------------------------------*/
package com.jlsoft.Demo;

import java.io.UnsupportedEncodingException;

public class ChinaByteLength {

	static String [] charset = {"utf-8",
			"utf-16",
			"UTF-16BE",
			"UTF-16LE",
			"UTF-32",
			"UTF-32BE",
			"UTF-32LE",
			"unicode",
			"GBK",
			"GB2312",
			"GB18030",
			"ISO8859-1",
			"BIG5",
			"ASCII"};

	public static void ByteLength(String charset,String Test) throws UnsupportedEncodingException {
		System.out.println(charset+"中文字节长度:"+Test.getBytes(charset).length);
	}

	public static void main(String[] args) throws UnsupportedEncodingException {
		for (int i = 0; i < charset.length; i++) {
			ByteLength(charset[i], "中国");
		}
	}

}

  工作中碰到了,所以做个代码总结下,最典型的UTF-8一个汉字字节码长度为3,而GBK中汉字字节码长度为2,英文为1。

时间: 2024-08-08 13:02:56

JAVA 中汉字在不同编码下的字节不同的相关文章

英文字母和中文汉字在不同字符集编码下的字节数

英文字母和中文汉字在不同字符集编码下的字节数 英文字母: 字节数 : 1;编码:GB2312 字节数 : 1;编码:GBK 字节数 : 1;编码:GB18030 字节数 : 1;编码:ISO-8859-1 字节数 : 1;编码:UTF-8 字节数 : 4;编码:UTF-16 字节数 : 2;编码:UTF-16BE 字节数 : 2;编码:UTF-16LE 中文汉字: 字节数 : 2;编码:GB2312 字节数 : 2;编码:GBK 字节数 : 2;编码:GB18030 字节数 : 1;编码:ISO

java中的常用字符编码ASCII、Unicode和UTF-8

首先讲一下几种字符的编码方式: 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte).也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111. 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定.这被称为ASCII码,一直沿用至今. ASCI

在 Java 中如何进行 BASE64 编码和解码

BASE64 编码是一种常用的字符编码,在很多地方都会用到.JDK 中提供了非常方便的 BASE64Encoder 和 BASE64Decoder,用它们可以非常方便的完成基于 BASE64 的编码和解码.下面是本人编的两个小的函数,分别用于 BASE64 的编码和解码: // 将 s 进行 BASE64 编码 public static String getBASE64(String s) { if (s == null) return null; return (new sun.misc.B

Java中的IO流之输入流|乐字节

亲爱的乐字节的小伙伴们,小乐又来分享Java技术文章了.上一篇写到了IO流,这篇文章着重 谈谈输入流,再下次再说输出流. 点击回顾上一篇:乐字节Java之file.IO流基础知识和操作步骤 一. 输入流 字节流和字符流的操作方式几乎完全一样,只是操作的数据单元不同而已 .字节流可 以操作所有文件,字符流仅操作纯文本. 1.抽象类:InputStream 和 Reader InputStream和Reader是所有输入流的基类,它们是两个抽象类,是所有输入流的模版,其中定义的方法在所有输入流中都可

java中HashMap在多线程环境下引起CPU100%的问题解决(转)

最近项目中出现了Tomcat占用CPU100%的情况,原以为是代码中出现死循环,后台使用jstack做了dump,发现是系统中不合理使用HashMap导致出现了死循环(注意不是死锁). 产生这个死循环的根源在于对一个未保护的共享变量 — 一个"HashMap"数据结构的操作.当在所有操作的方法上加了"synchronized"后,一切恢复了正常. 这算jvm的bug吗?应该说不是的,这个现象很早以前就报告出来了(详细见:http://bugs.sun.com/bug

java中HashMap在多线程环境下引起CPU100%的问题解决

最近项目中出现了Tomcat占用CPU100%的情况,原以为是代码中出现死循环,后台使用jstack做了dump,发现是系统中不合理使用HashMap导致出现了死循环(注意不是死锁). 产生这个死循环的根源在于对一个未保护的共享变量 — 一个"HashMap"数据结构的操作.当在所有操作的方法上加了"synchronized"后,一切恢复了正常. 这算jvm的bug吗?应该说不是的,这个现象很早以前就报告出来了(详细见:http://bugs.sun.com/bug

Java中JNI的使用(下)

数组的操作 数组是一个很常用的数据类型,在但是在 JNI 中并不能直接操作 jni 数组(比如 jshortArray.jfloatArray).使用方法是: 获取数组长度:jsize GetArrayLength(jarray array) 创建新数组: ArrayType New<PrimitiveType>Array(jsize length); 通过JNI数组获取一个C/C++数组:<type>* Get<type>ArrayElements(jshortArr

说说java中传容器某些情况下失效

楼主今天写个方法移除map集合中的空值,遇到个问题,就是对容器操作后,发现失效了:先上代码 public static void removeValueNullAndEmpty(Map<String,String> A) { Map<String,String> B = new HashMap<>(); for(String key : B.keySet()){ if(A.get(key) != null || !"".equals(A.get(ke

PowerShell中汉字转换为ASCII编码

function asc($param) { $rtn = '' $list = $param -split '' foreach ($char in $list) { if($char -ne '') { $rtn = $rtn + ("\u" + ("{0:x}" -f [int]([char]$char))) } } return $rtn } $source="\u54ce\u5466\u4e0d\u9519\u54e6" $evalua