java write 去bom_Java处理UTF-8带BOM的文本的读写
今天在做用Java輸出CSV文件,用MS Office2007打開時,總是亂碼,文件是用UTF-8輸出的,用其它編輯器打沒有亂碼問題,只有MS office會有問題,經過一天的研究,找到了如下解決方法,在輸出信息頭上加BOM即可。以下是轉載的文章,做為備忘錄。
什么是BOM
BOM(byte-order mark),即字节顺序标记,它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的特殊标记,用来识别Unicode文件的编码类型。对于UTF-8来说,BOM并不是必须的,因为BOM用来标记多字节编码文件的编码类型和字节顺序(big-endian或little- endian)。
BOMs 文件头:
00 00 FE FF = UTF-32, big-endian
FF FE 00 00 = UTF-32, little-endian
EF BB BF = UTF-8,
FE FF = UTF-16, big-endian
FF FE = UTF-16, little-endian
下面举个例子,针对UTF-8的文件BOM做个处理:
String xmla = StringFileToolkit.file2String(new File(“D:\\projects\\mailpost\\src\\a.xml”),“UTF-8”);
byte[] b = xmla.getBytes(“UTF-8”);
String xml = new String(b,3,b.length-3,“UTF-8”);
------------------------
byte[] bom ={(byte) 0xEF,(byte) 0xBB,(byte) 0xBF};
response.getOutputStream().write(bom);
..............
思路是:先按照UTF-8编码读取文件后,跳过前三个字符,重新构建一个新的字符串,然后用Dom4j解析处理,这样就不会报错了。其他编码的方式处理思路类似,其实可以写一个通用的自动识别的BOM的工具,去掉BOM信息,返回字符串。
不过这个处理过程已经有牛人解决过了:http://koti.mbnet.fi/akini/java/unicodereader/
java write 去bom_Java处理UTF-8带BOM的文本的读写相关推荐
- java bom json,JSON字符串带BOM头ufeff
调用三方接口返回值JSON字符串带BOM头"\ufeff",JSON解析死活报错. 我是用SpringBoot的RestTemplate调用三方接口的,一开始返回值我是用对象接收返 ...
- Java PermGen 去哪里了?
Java PermGen 去哪里了? 原文链接:原文作者:Monica Beckwith 以下为本人翻译,仅用于交流学习,版权归原作者和InfoQ所有,转载注明出处,请不要用于商业用途 在Java虚 ...
- 编写Java程序,在屏幕上显示带标题的窗口,并添加一个按钮。当用户单击按钮时,结束程序。
编写Java程序,在屏幕上显示带标题的窗口,并添加一个按钮.当用户单击按钮时,结束程序. package p3;import java.awt.event.ActionEvent; import ja ...
- java 模板 word转pdf 可分页 带图片
java 模板 word转pdf 可分页 带图片 之前写过一个简单的案例,但是在项目中完全不能满足客户的需求,所以重新用啦一种方式来写,采用了word转换pdf的方式,这种经过不断研究,满足了可分页, ...
- java中去字符串中的(全角)空格
在Java中去字符串首尾空格或去除所有空格的(包括全角)方法如下: /** * 去除字符串中所包含的空格(包括:空格(全角,半角).制表符.换页符等) * @param s * @return */ ...
- 有信仰自然好,关键是信仰带我们去何方。如果信仰带我们去沟里,那我 们还是暂且留在岸上看天色吧。----韩寒
有信仰自然好,关键是信仰带我们去何方.如果信仰带我们去沟里,那我 们还是暂且留在岸上看天色吧.----韩寒
- JAVA内存分析:使用JDK自带工具进行内存和CPU分析及垃圾回收
JAVA内存分析:使用JDK自带工具进行内存和CPU分析及垃圾回收 JAVA内存分析一:基于dump内存溢出快照分析 JAVA内存分析二:idea集成jprofiler查看JVM内存使用情况 JAVA ...
- Java 编写推箱子报告,推箱子游戏用java怎么去写
推箱子游戏用java怎么去写 发布时间:2020-06-22 16:31:07 来源:亿速云 阅读:100 作者:清晨 这篇文章将为大家详细讲解有关推箱子游戏用java怎么写,小编觉得挺实用的,因此分 ...
- java期末课程设计----模拟银行业务(带界面)
java期末课程设计----模拟银行业务(带界面) 本项目包含存款,取款,查询,转账,修改密码等功能的银行管理系统的功能(不涉及数据库).大致流程图如下: 一.设计思路 本系统采用JAVA语言并在ec ...
最新文章
- 求方程ax^2+bx+c=0的根。
- Vivado IP核的综合模式:Global以及Out of context的区别理解
- 使用Docker-容器命令案例1
- 浅谈项目管理中的四要素
- JAVA进阶day06内部类和匿名类
- Taro+react开发(65):h5全局重置背景样式
- 机器学习中的特征建模(特征工程)和算法选型建模 - 以暴力破解识别为例
- Rsync 服务安全加固
- 异常:org.springframework.http.converter.HttpMessageNotReadableException
- 怎样访问远程服务器文件夹,远程访问服务器文件夹
- 【转载】C++引用详解
- 《合作的进化》pdfmobiepub电子版
- 脉冲神经网络-基于IAF神经元的手写数字识别
- 用Excel做了7天报表,这个领导喜欢的可视化工具,只用了7小时
- Flutter中设ListView的shrinkWrap为ture导致的崩溃
- 哪种方式的电子签名更可靠?
- 一亩三分地,答题题库,1point3acres (Time series,每周末答题一次/更新一次)
- linux与windows内核哪个难学,国产操作系统为何都基于Linux内核?又和Windows像?
- LZO和MiniLZO编码介绍
- 剑指offer: 二叉树中和为某一值的路径
热门文章
- java web批量下载_JAVAWEB批量文件下载器
- java实现并发连接池_java并发实战:连接池实现
- 南京信息工程大学百科园c语言答案,南京信息工程大学822C/C++程序设计考研真题及笔记...
- Java学习笔记2.3.3 运算符与表达式 - 关系运算符
- 《天天数学》连载50:二月十九日
- MyBatis使用MySQL存储过程
- 【codevs1116】四色问题,深搜入门题目
- C ++基础 | 从 理解C++程序结构 到 编写程序_1
- python中代码块使用缩进来表示对吗_Python 为什么使用缩进来划分代码块?
- 【英语学习】【WOTD】largesse 释义/词源/示例