• 使用IO流将数据库中数据生成一个文件,结果使用Notepad++打开部分数据结尾出现NUL


    场景描述:

      项目中通过java代码中从数据库中查询一系列数据,对数据做相应处理,然后通过字符流将数据写如一个新生成的文件中,将该项目部署在linux服务器上,最后生成的文件拿到本地使用notepad++打开会在部分数据末尾出现NUL

    排查原因:

    • NUL在C语言中是一个特殊字符常量'',空字符
    • 在linux中处理字符串写入,每行字符串结尾如果是空字符,linux就会用''表示

    解决方案:

      使用该文件时将NUL替换为“ ”空字符

        public static String trimnull(String string) throws UnsupportedEncodingException
        {//该方法作用是使用" "替换一个字符串中的所有NUL
    		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]){//排除NUL(0)
    				list.add(bytes[i]);
    			}else {
    				byte b = 32;//空字符对应的byte值
    				list.add(b);
    			}
    		}
    		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;
        }
    

      

  • 相关阅读:
    Webpack
    django 基础入门(二)
    django 基础入门(一)
    jQuery(二)
    JavaScripts+jquery
    html(第一天,div+css)
    SqlAlchemy ORM
    redis总结
    memcached总结
    Python (九) 协程以及数据库操作
  • 原文地址:https://www.cnblogs.com/qf123/p/9700829.html
Copyright © 2020-2023  润新知