首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 精準截取混合中英字串:按位元組長度截取避免亂碼的實用邏輯

     編輯:Java 相關知識

解決 substring 按字元截取導致中英文混雜時位元組長度不符的問題,提供按實際位元組長度累加截取的演算法,確保中英混排不斷字。

核心邏輯

int i = 0;
String tempstr = "";
for (int j = 0; j < str.length(); j++) {
  // 累加字元的位元組長度 (中文通常 3 bytes UTF-8, 英文 1 byte)
  i += String.valueOf(str.charAt(j)).getBytes().length;
  if (i <= 25) { // 目標位元組上限
    tempstr += String.valueOf(str.charAt(j));
  }
}
if (tempstr.length() != str.length()) {
  str = tempstr + "..."; // 超過則加省略號
}

適用場景

  • 資料庫欄位定義為 VARCHAR2(25 BYTE) 需前端預截取。
  • 報表、UI 顯示固定寬度區塊需按位元組對齊。

注意事項

  • getBytes() 無參數時使用平台預設編碼 (通常 UTF-8),建議明確指定 getBytes("UTF-8")。
  • 若需支援增補字元 (Emoji 等),需改用 codePointAt 與 Character.charCount 處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved