How to substring a UTF8 string in Java?
•
Java
Suppose I have the following string: R ü ckrufinsausland. I need to insert it into a database with a maximum size of 10
I need to write a function to execute this substring in Java, but considering that ü needs 2 bytes, the substring returned in this case should be R ü ckrufi (9 characters) Any suggestions?
Solution
If you want to trim data in Java, you must write a function to trim strings using the DB charset used, similar to this test case:
package test; import java.io.UnsupportedEncodingException; public class TrimField { public static void main(String[] args) { //UTF-8 is the db charset System.out.println(trim("Rückruf ins Ausland",10,"UTF-8")); System.out.println(trim("Rüückruf ins Ausland","UTF-8")); } public static String trim(String value,int numBytes,String charset) { do { byte[] valueInBytes = null; try { valueInBytes = value.getBytes(charset); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e.getMessage(),e); } if (valueInBytes.length > numBytes) { value = value.substring(0,value.length() - 1); } else { return value; } } while (value.length() > 0); return ""; } }
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码