utf-8 长度

作者:实现
链接:https://www.zhihu.com/question/30945431/answer/91316302
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

utf-8编码英文字符所占字节数:1

utf-8编码中文字符所占字节数:3


utf-16编码英文字符所占字节数:4

utf-16编码中文字符所占字节数:4


UTF-16BE编码英文字符所占字节数:2

UTF-16BE编码中文字符所占字节数:2


UTF-16LE编码英文字符所占字节数:2

UTF-16LE编码中文字符所占字节数:2


UTF-32编码英文字符所占字节数:4

UTF-32编码中文字符所占字节数:4


UTF-32BE编码英文字符所占字节数:4

UTF-32BE编码中文字符所占字节数:4


UTF-32LE编码英文字符所占字节数:4

UTF-32LE编码中文字符所占字节数:4


unicode编码英文字符所占字节数:4

unicode编码中文字符所占字节数:4


GBK编码英文字符所占字节数:1

GBK编码中文字符所占字节数:2


GB2312编码英文字符所占字节数:1

GB2312编码中文字符所占字节数:2


GB18030编码英文字符所占字节数:1

GB18030编码中文字符所占字节数:2


ISO8859-1编码英文字符所占字节数:1

ISO8859-1编码中文字符所占字节数:1


BIG5编码英文字符所占字节数:1

BIG5编码中文字符所占字节数:2


ASCII编码英文字符所占字节数:1

ASCII编码中文字符所占字节数:1



纸上得来终觉浅,绝知此事要躬行!以上结果是我用下边Java代码生成的:


public static void main(String[] args){
		
		String[] charsetNames={	
						"utf-8",
						"utf-16",
						"UTF-16BE",
						"UTF-16LE",
						"UTF-32",
						"UTF-32BE",
						"UTF-32LE",
						"unicode",
						"GBK",
						"GB2312",
						"GB18030",
						"ISO8859-1",
						"BIG5",
						"ASCII"
				   }; 
		
		
		for(int i=0;i<charsetNames.length;i++){
			printByteLength(charsetNames[i]);
		}

	}
	
	/**
	 * String类的不带参数的getBytes()方法会以程序所运行平台的默认编码方式为准来进行转换,
	 * 在不同环境下可能会有不同的结果,因此建议使用指定编码方式的getBytes(String charsetName)方法。
	 */
	public static void printByteLength(String charsetName){
		String a="a";	//一个英文字符
		String b="啊";	//一个中文字符
		try {
			System.out.println(charsetName+"编码英文字符所占字节数:"+a.getBytes(charsetName).length);
			System.out.println(charsetName+"编码中文字符所占字节数:"+b.getBytes(charsetName).length);
			System.out.println();
		} catch (UnsupportedEncodingException e) {
			System.out.println("非法编码格式!");
		}
	}
posted @ 2017-12-11 14:51  kakaisgood  阅读(601)  评论(0编辑  收藏  举报