背景:
我们需要将一段文本存库,存库时报错:
无效的 "UTF8" 编码字节顺序: 0x00java.lang.IllegalArgumentException: Null input buffer
此时想到对这段文本进行转码存储。实施起来,转码过程没有问题,也能够存到数据库里了。但是从数据库中读取后,解码时还是会报错。将最开始的文本用 nodepad++ 打开,发现在本文中存在一个 Nul
字符,就是这个该死的字符引起的这一系列的问题
既然转码这条路走不通,那么我们就考虑将这个字符去掉
public static String trimnull(String string) throws UnsupportedEncodingException{
ArrayList<Byte> list = new ArrayList<Byte>(); byte[] bytes = string.getBytes("UTF-8"); for(int i=0;bytes!=null&&i<bytes.length;i++){
if(0!=bytes[i]){
list.add(bytes[i]); } } byte[] newbytes = new byte[list.size()]; for(int i = 0 ; i<list.size();i++){
newbytes[i]=(Byte) list.get(i); } String str = new String(newbytes,"UTF-8"); return str;
}