使用IO流将数据库中数据生成一个文件,结果使用Notepad++打开部分数据结尾出现NUL
2024-08-29 23:51:15
场景描述:
项目中通过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;
}
最新文章
- Window10+VS2015+DevExpress.net 15.1.7完美破解(图)
- C#的值参数与引用参数
- linux之iptables总结
- autotrace显示Statistics很多信息为0(转)
- Mac OS X用户,使用homebrew安装,FreeBSD也可以
- 【JAVA】修改项目包名
- iOS事件响应链(Responder Chain)
- Mvc 流程调用分析
- [国嵌攻略][070-095][Linux编程函数手册]
- [Go] golang的竞争状态
- 如何清理Docker占用的磁盘空间?
- c# datatable 分组
- 项目管理第一篇(PROJECT MANAGEMENT A Systems Approach to Planning, Scheduling, and Controlling)
- k8s环境清理
- springmvc组件--ViewResolver
- 外网訪问XAMPP失败 解决方式 XAMPP1.8.3
- autotools源文件相同/不同目录下
- docker启动失败(can&#39;t create unix socket /var/run/docker.sock: is a directory)
- 转 linux下php扩展mysqli的支持
- Android入门-新手如何成功创建一个Android小应用