若用 length() 取資料長度, 中文字會當作 1 碼,
而用 substring 擷取子字串, 中文字也會當作 1 碼,
要如何正確取得中文字的長度與擷取子字串,
參考以下範例 :
程式碼
public class aaa
{
public static void main( String args[] )
{
String vData = "歡迎光臨, Hello World"; // 資料
byte[] vResult = new byte[100];
int getSubstringLen = 8; // 擷取長度
// 長度
System.out.println( "length : " + vData.length() );
System.out.println( "Actual length : " + vData.getBytes().length );
// 擷取前幾碼
System.out.println( "前 " + getSubstringLen + " 碼 : "
+ vData.substring( 0, getSubstringLen )
);
System.arraycopy( vData.getBytes(), 0, vResult, 0, getSubstringLen );
System.out.println( "Actual 前 " + getSubstringLen + " 碼 : "
+ new String(vResult)
);
}
}
//執行結果
length : 17
Actual length : 21
前 8 碼 : 歡迎光臨, He
Actual 前 8 碼 : 歡迎光臨