En Java, String doit être tronqué du nombre d'octets s'il s'agit d'une liaison API avec un nombre limité d'octets. En japonais, Charaset fait 2 octets, 3 octets ... et si vous tronquez au milieu du caractère, cela semble étrange. J'y ai réfléchi un moment, alors j'ai écrit le code sous forme de mémorandum Je ne l'ai pas déplacé, mais peut-être que ça va ...
Sample.java
public static String truncateByte(String s, int length, Charset charset) {
if (StringUtils.isEmpty(s) || length <= 0) {
return s == null ? null : "";
}
if (s.getBytes(charset).length <= length) {
return s;
}
String r = new String(s.getBytes(charset), 0, length, charset);
while (r.length() >= 0 && !s.startsWith(r)) {
r = r.substring(0, r.length() - 1);
}
return r;
}
Recommended Posts