首页 > 数据库技术 > 详细

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

时间:2018-09-25 17:55:11      阅读:232      评论:0      收藏:0      [点我收藏+]

场景描述:

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

排查原因:

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

解决方案:

  使用该文件时将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;
    }

  

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

原文:https://www.cnblogs.com/qf123/p/9700829.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!