<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. java語言

    java如何處理BOM文本

    時間:2025-06-01 23:08:31 賽賽 java語言 我要投稿
    • 相關推薦

    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文本的方法08-31

    Java如何讀取文本文件07-06

    Java 異常處理09-16

    的java圖像處理的方法10-29

    java圖像處理的方法10-18

    Java的異常處理及應用10-01

    如何使用java10-14

    java如何構造09-21

    Java異常處理語句及解析07-27

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人