2019年11月20日 星期三

Java 不同編碼字串, 其字串長度大小計算

以 Java 開發專案, 在 DAO 寫入資料庫時, 常遇到JAVA 字串與資料庫編碼不一致,
有時會產生字串過長,導致無法寫入資料庫的情況.

這時就要在入庫前, 先驗證 JAVA 編碼字串是否超出資料庫欄位長度

JAVA 依 不同編碼, 其長度是不一樣的

如:
String  c_str = "臺北市私立國際醫療長期照顧中心(養護型)";

byte[]  BIG5B = c_str .getBytes("BIG5");
byte[]  UTF8B = c_str .getBytes("UTF-8");
byte[]  U16LEB = c_str .getBytes("UTF16LE");

System.out.println( BIG5B .length );  // 38  : BIG5編碼每個中文字為  2 Bytes, 英數符號 為 1 Bytes
System.out.println( UTF8B .length );    // 56  :  UTF-8編碼每個中文字為  3 Bytes 英數符號 為 1 Bytes
System.out.println( U16LEB .length );  // 40  : U16LEB UNICODE 編碼


Byte Array 擷取字串 (由 Byte 轉換 為字串 )
byte[] n_UTF8B = Arrays.copyOfRange( UTF8B , 0, 50 );
String n_str = new String( n_UTF8B, "UTF-8");

轉成字串後, 部分中文字會被切成一半造成亂碼!! 須注意




沒有留言:

Java 不同編碼字串, 其字串長度大小計算

以 Java 開發專案, 在 DAO 寫入資料庫時, 常遇到JAVA 字串與資料庫編碼不一致, 有時會產生字串過長,導致無法寫入資料庫的情況. 這時就要在入庫前, 先驗證 JAVA 編碼字串是否超出資料庫欄位長度 JAVA 依 不同編碼, 其長度是不一樣的 如: ...