zoukankan      html  css  js  c++  java
  • 使用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;
        }
    

      

  • 相关阅读:
    拉格朗日乘子法
    EM算法
    最大似然估计
    理解先验概率 后验概率 似然函数
    似然函数理解
    markdown 语法规则
    bash101总结
    hmm和Veterbi算法(一)
    Kaldi 安装
    通俗的解释交叉熵与相对熵
  • 原文地址:https://www.cnblogs.com/qf123/p/9700829.html
Copyright © 2011-2022 走看看