標籤:
package com.io;public class Encodedemo { public static void main(String[] args)throws Exception{ // TODO Auto-generated method stub String s ="中國ABC"; byte[] bytes1 = s.getBytes();//轉換成位元組序列用的是項目預設的位元組編碼 for(byte b:bytes1){ //把位元組轉換成int 以16進位的方式顯示 System.out.print(Integer.toHexString(b&0xff)+" "); } System.out.println(); byte[] bytes2 = s.getBytes("gbk"); //gbk編碼中文佔用2個位元組,英文佔用1個位元組 for(byte b:bytes2){ //把位元組轉換成int 以16進位的方式顯示 System.out.print(Integer.toHexString(b&0xff)+" "); } System.out.println(); byte[] bytes3 = s.getBytes("utf-8"); //utf-8編碼中文佔用3個位元組,英文佔用1個位元組 for(byte b:bytes3){ //把位元組轉換成int 以16進位的方式顯示 System.out.print(Integer.toHexString(b&0xff)+" "); } //java 是雙位元組編碼 utf-16be //utf-16be中文佔用2個位元組,英文佔用2個位元組 System.out.println(); byte[] bytes4 = s.getBytes("utf-16be"); //utf-8編碼中文佔用3個位元組,英文佔用1個位元組 for(byte b:bytes4){ //把位元組轉換成int 以16進位的方式顯示 System.out.print(Integer.toHexString(b&0xff)+" "); } System.out.println(); /* * 當你的位元組序列是某種編碼是,這個時候想把位元組序列變成 * 字串,也需要用這種編碼方式,否者會出現亂碼 */ String str1 = new String(bytes4); System.out.println(str1); String str2 = new String(bytes4,"utf-16be"); System.out.println(str2); /* * 文字檔 就是位元組序列 * 可以是任意編碼的位元組序列 * 如果我們在中文機器上直接建立文字檔 直接建立 * 那麼該文字檔只認識ANSI編碼 * 聯通、聯這是一種巧合,他們正好符合了utf-8編碼的規制 */ } }
java 檔案的編碼 問題