- 相关推荐
java如何处理BOM文本
说起BOM,这个疑问还比拟费事,由于BOM不可见,但用顺序做不一样编码文本处置时分却经常须要思索到BOM的疑问。在此之前,先对BOM做个容易见解。以下是小编为大家搜索整理的java如何处理BOM文本,希望能给大家带来帮助!更多精彩内容请持续关注我们应届毕业生考试网!
下面举个例子,针对UTF-8的文件BOM做个处理:
Stringxmla=StringFileToolkit.file2String(newFile("D:projectsmailpostsrca.xml"),"UTF-8");
byte[]b=xmla.getBytes("UTF-8");
Stringxml=newString(b,3,b.length-3,"UTF-8");
Documentdoc1=DocumentHelper.parseText(xml);
Elemente1=(Element)doc1.selectSingleNode("/ResponseData/Body/RetDesc");
Elemente2=(Element)doc1.selectSingleNode("/ResponseData/Head/RespID");
Elemente3=(Element)doc1.selectSingleNode("/ResponseData/Body/RetCode");
Elemente4=(Element)doc1.selectSingleNode("/ResponseData/Body/RetDesc");
思路是:先按照UTF-8编码读取文件后,跳过前三个字符,重新构建一个新的字符串,然后用Dom4j解析处理,这样就不会报错了。
其他编码的方式处理思路类似,其实可以写一个通用的自动识别的BOM的工具,去掉BOM信息,返回字符串。
不过这个处理过程已经有牛人解决过了:http://koti.mbnet.fi/akini/java/unicodereader/
不同的系统对BOM的支持
因为一些系统或程序不支持BOM,因此带有BOM的Unicode文件有时会带来一些问题。
1.JDK1.5以及之前的Reader都不能处理带有BOM的UTF-8编码的文件,解析这种格式的xml文件时,会抛出异常:Content is not allowed in prolog.
2.Linux/UNIX 并没有使用 BOM,因为它会破坏现有的 ASCII 文件的语法约定。
不同的编辑工具对BOM的处理也各不相同。使用Windows自带的记事本将文件保存为UTF-8编码的时候,记事本会自动在文件开头插入BOM(虽然BOM对UTF-8来说并不是必须的),但是editplus就不会这样做。
BOM与XML
XML解析读取XML文档时,W3C定义了3条规则:
1.如果文档中有BOM,就定义了文件编码;
2.如果文档中没有BOM,就查看XML声明中的编码属性;
3.如果上述两者都没有,就假定XML文档采用UTF-8编码。
Java处理文件BOM头的方式
一、 使用apache的工具类,以BOMStream为例:
BOMStream,api参考:http://commons.apache.org/io/apidocs/org/apache/commons/io/input/BOMInputStream.html
该类的构造方式:
BOMInputStream bomIn = new BOMInputStream(in) //仅能检测到UTF8的bom,且在流中exclude掉bom
BOMInputStream bomIn = new BOMInputStream(in, include); //同上,且指定是否包含也可以指定检测多种编码的bom,但目前仅支持UTF-8/UTF-16LE/UTF-16BE三种,对于UTF32之类不支持。
BOMInputStream bomIn = new BOMInputStream(in, ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_16BE);
有用的方法:
bomIn.hasBOM()、hasBOM(ByteOrderMask.**)可用于判断当前流中是否检测到了bom。
BOM基本简介
采用计算机辅助企业生产管理,首先要使计算机能够读出企业所制造的产品构成和所有要涉及的物料,为了便于计算机识别,必须把用图1示表达的产品结构转化成某种数据格式,这种以数据格式来描述产品结构的文件就是物料清单,即是BOM。它是定义产品结构的技术文件,因此,它又称为产品结构表或产品结构树。在某些工业领域,可能称为“配方”、“要素表”或其它名称。
在MRPⅡ和ERP系统中,物料一词有着广泛的含义,它是所有产品,半成品,在制品,原材料,配套件,协作件,易耗品等等与生产有关的物料的统称。
在通常的MRPⅡ和ERP系统中BOM是指由双亲件及子件所组成的关系树。BOM可以是自顶向下分解的形式或是以自底向上跟踪的形式提供信息。
在MRPⅡ和ERP系统中BOM是一种数据之间的组织关系,利用这些数据之间层次关系可以作为很多功能模块设计的基础,这些数据的某些表现形式是我们大家感到熟悉的汇总报表。
文件作用
BOM是PDM/MRPⅡ/ERP信息化系统中最重要的基础数据,其组织格式设计合理与否直接影响到系统的处理性能,因此,根据实际的使用环境,灵活地设计合理且有效的BOM是十分重要的。
BOM不仅是MRPⅡ系统中重要的输入数据,而且是财务部门核算成本,制造部门组织生产等的重要依据,因此,BOM的影响面最大,对它的准确性要求也最高。正确地使用与维护BOM是管理系统运行期间十分重要的工作。
此外,BOM还是CIMS/MIS/MRPⅡ/ERP与CAD,CAPP等子系统的重要接口,是系统集成的关键之处,因此,用计算机实现BOM管理时,应充分考虑它与其他子系统的信息交换问题。
BOM信息在MRPⅡ/ERP系统中被用于MRP计算,成本计算,库存管理。BOM有各种形式,这些形式取决于它的用途,BOM的具体用途有:
1、是计算机识别物料的基础依据。
2、是编制计划的依据。
3、是配套和领料的依据。
4、根据它进行加工过程的跟踪。
5、是采购和外协的依据。
6、根据它进行成本的计算。
7、可以作为报价参考。
8、进行物料追溯。
9、使设计系列化,标准化,通用化。
【java如何处理BOM文本】相关文章:
java处理BOM文本的方法12-06
Java如何读取文本文件04-24
Java 异常处理09-27
的java图像处理的方法10-30
java图像处理的方法11-02
Java的异常处理及应用09-21
java图像处理的方法大全12-04
java图片处理功能介绍04-26
在Java里处理文件的技巧09-23