對XML 進行 parse 時的Invalid Unicode character (0x0) 分析
XML 在搜尋引擎的低端起到了非常重要的作用,可是由於相當多數的網路上的Rss feed或者XML feed都是直接從資料庫檔案生成的,因此極有可能包含有一些非常字元,而這些字元在XML進行Parse的時候就會帶來 Invalid Unicode character (0x0) 這樣的錯誤或者是org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x0) was found,如何解決這樣的錯誤?
先看看Unicode的一些基礎知識:
Unicode 最初設計是作為一種固定寬度的 16 位字元編碼。在 Java 程式語言中,基本資料型別 char 初衷是透過提供一種簡單的、能夠包含任何字元的資料型別來充分利用這種設計的優點。不過,現在看來,16 位編碼的所有 65,536 個字元並不能完全表示全世界所有正在使用或曾經使用的字元。於是,Unicode 標準已擴充套件到包含多達 1,112,064 個字元。那些超出原來的 16 位限制的字元被稱作增補字元。Unicode 標準 2.0 版是第一個包含啟用增補字元設計的版本,但是,直到 3.1 版才收入第一批增補字符集。由於 J2SE 的 5.0 版必須支援 Unicode 標準 4.0 版,因此它必須支援增補字元。
對增補字元的支援也可能會成為東亞市場的一個普遍商業要求。政府應用程式會需要這些增補字元,以正確表示一些包含罕見中文字元的姓名。出版應用程式可能會需要這些增補字元,以表示所有的古代字元和變體字元。中國政府要求支援 GB18030(一種對整個 Unicode 字符集進行編碼的字元編碼標準),因此,如果是 Unicode 3.1 版或更新版本,則將包括增補字元。臺灣標準 CNS-11643 包含的許多字元在 Unicode 3.1 中列為增補字元。香港政府定義了一種針對粵語的字符集,其中的一些字元是 Unicode 中的增補字元。最後,日本的一些供應商正計劃利用增補字元空間中大量的專用空間收入 50,000 多個日文漢字字元變體,以便從其專有系統遷移至基於 Java 平臺的解決方案。
因此,Java 平臺不僅需要支援增補字元,而且必須使應用程式能夠方便地做到這一點。由於增補字元打破了 Java 程式語言的基礎設計構想,而且可能要求對程式設計模型進行根本性的修改,因此,Java Community Process 召集了一個專家組,以期找到一個適當的解決方案。該小組被稱為 JSR-204 專家組,使用 Unicode 增補字元支援的 Java 技術規範請求的編號。從技術上來說,該專家組的決定僅適用於 J2SE 平臺,但是由於 Java 2 平臺企業版 (J2EE) 處於 J2SE 平臺的最上層,因此它可以直接受益,我們期望 Java 2 平臺袖珍版 (J2ME) 的配置也採用相同的設計方法。
不過,在瞭解 JSR-204 專家組確定的解決方案之前,我們需要先理解一些術語。
程式碼點、字元編碼方案、UTF-16:這些是指什麼?
不幸的是,引入增補字元使字元模型變得更加複雜了。在過去,我們可以簡單地說“字元”,在一個基於 Unicode 的環境(例如 Java 平臺)中,假定字元有 16 位,而現在我們需要更多的術語。我們會盡量介紹得相對簡單一些 — 如需瞭解所有詳細的討論資訊,您可以閱讀 Unicode 標準第 2 章或 Unicode 技術報告 17“字元編碼模型”。Unicode 專業人士可略過所有介紹直接參閱本部分中的最後定義。
字元是抽象的最小文字單位。它沒有固定的形狀(可能是一個字形),而且沒有值。“A”是一個字元,“
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/750220/viewspace-916719/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- An invalid XML character (Unicode: 0x18) was foundXMLUnicode
- Error parsing XML: An invalid XML character (Unicode:0x1f) was foundErrorXMLUnicode
- An invalid XML character (Unicode: 0x10) was found in the value of attributeXMLUnicode
- An invalid XML character (Unicode: 0x4) was found in the element content of theXMLUnicode
- Java - XML字元支援報錯An invalid XML characterJavaXML字元
- 微信公眾號 報 An invalid XML character (Unicode: 0x1a) was found in the CDATA sectioXMLUnicode
- All About JAVA An invalid XML character (Unicode: 0xdd65) was found in the comment 錯誤JavaXMLUnicode
- Dom4j 讀 xml 時,遇到 xml 無效字元,報錯:An invalid XML characterXML字元
- SAXParseException An invalid XML character 問題的解決ExceptionXML
- PHP 對字串進行十六進位制替換 invalid character in attribute valuePHP字串
- 使用XPathExpression類對XML進行排序 (轉)ExpressXML排序
- XML DOM Parse Error 物件概述XMLError物件
- Python 錯誤 SyntaxError: invalid character in identifierPythonErrorIDE
- 使用JAXP對xml文件進行DOM解析基礎XML
- 【資料分析】針對家庭用電資料進行時序分析(1)
- 解析XML檔案時,無效的XML 字元 (Unicode: 0x7)異常處理XML字元Unicode
- MySQL Invalid gbk character string 1300MySql
- JAVA進行XML解析JavaXML
- 對於ArrayList中的泛型進行分析泛型
- AngularJS中使用$parse或$eval在執行時對Scope變數賦值AngularJS變數賦值
- DataPump Export (EXPDP) Fails With Error LPX-216 Invalid CharacterExportAIError
- Using lxml.objectify to Parse XML With PythonXMLObjectPython
- 使用 Spark 進行微服務的實時效能分析Spark微服務
- 如何對資料目標進行分析
- 使用jaxp解析器dom方式對xml節點進行操作XML
- 用於對執行慢的查詢進行分析的清單
- Mybatis XML檔案中,對java.util.Date物件的值到轉換為執行SQL進行比較所做的隱式行為分析。MyBatisXMLJava物件SQL
- Asp.net 對一下XML文件進行新增刪改的例項ASP.NETXML
- Jsp Unescaped xml character報錯的解決辦法JSXML
- IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokensExceptionHTTP
- 利用X.509證書對XML進行加密和簽名XML加密
- PostgreSQL中對日期時間進行分組SQL
- fast parse,soft parse,hard parse的區別!AST
- 影像對映——我的web前端自學之路進行時2Web前端
- 對序列進行遷移時產生間斷的原因
- ABAP中對內表進行clear操作時的注意點
- 10g 每晚定時對變化資料Table進行分析的一些問題
- Docker中使用Xhprof 對程式碼進行效能分析Docker