1. 程式人生 > >java中如何從字串中刪選中文字元(GBK編碼和UTF-8編碼)

java中如何從字串中刪選中文字元(GBK編碼和UTF-8編碼)

1.GBK編碼中文佔兩個位元組,英文佔一個位元組。下面進行一個小的程式的測試:

<span style="font-size:24px;">import java.io.UnsupportedEncodingException;


public class TestMain{
	
	public static void main(String[] args) throws UnsupportedEncodingException
	{
		String str = "a二bcde";
		byte[] by = str.getBytes("GBK");
		System.out.print(by.length);
		
		for(byte b: by)
			System.out.print(b+"$$$");
	}
}</span>
輸出為:797$$$-74$$$-2$$$98$$$99$$$100$$$101$$$

這裡我們注意上面字串中的中文字元被轉換為兩個byte,輸出是都為負數

所以我們可以用byte[i] < 0判斷是否為中文字元,如果是GBK編碼那麼,只要找到第一個byte[i]小於零的位置,連續連個位置即為中文字元。

2.UTF-8編碼中文佔三個位元組,英文佔兩個位元組。下面進行一小段程式的測試:

import java.io.UnsupportedEncodingException;


public class TestMain{
	
	public static void main(String[] args) throws UnsupportedEncodingException
	{
		String str = "a我bcde";
		byte[] by = str.getBytes("UTF-8");
		System.out.print(by.length);
		
		for(byte b: by)
			System.out.print(b+"$$$");
	}
}
輸出為:897$$$-26$$$-120$$$-111$$$98$$$99$$$100$$$101$$$故我們可以從第一個byte[i] < 0的位置連續取3個位元組,然後轉化為字串即是我們想要的中文字元