org.teldap.core.xmlvalidator.util.encoding
Class Encoding

java.lang.Object
  extended by org.teldap.core.xmlvalidator.util.encoding.Encoding

public class Encoding
extends java.lang.Object

Copyright 2009 數位典藏與數位學習國家型科技計畫(TELDAP) 數位核心平台計畫

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Title: 檢查檔案編碼

Version:
1.0
Author:
徐慈妍、洪崇熙、洪國翔

Constructor Summary
Encoding()
           
 
Method Summary
 java.util.HashMap collectMsg(java.io.File des)
           
 boolean isEncodingAttrBig5(java.io.File des)
          Encoding屬性值是否等於Big5:由於限定處理的檔案編碼為Big5,所以在XML檔案一開始的第一行,即XML檔案進行版本及使用編碼宣告處,如<?
 boolean isEncodingBig5(java.io.File des)
          檔案編碼是否為Big5:檢查檔案是否正確編碼的方式,是將檔案以其宣稱的編碼,將檔案解碼為文字後,再由人來判斷是否為可讀的文字,若是可讀的文字而非亂碼,則可判斷該檔案的確採用其所宣稱的編碼方式。
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Encoding

public Encoding()
Method Detail

isEncodingBig5

public boolean isEncodingBig5(java.io.File des)
檔案編碼是否為Big5:檢查檔案是否正確編碼的方式,是將檔案以其宣稱的編碼,將檔案解碼為文字後,再由人來判斷是否為可讀的文字,若是可讀的文字而非亂碼,則可判斷該檔案的確採用其所宣稱的編碼方式。但是我們想排除由人為檢查的方式,盡量找尋一些可用的法則來自動化處理檔案編碼的檢查,即使這個方法仍然有例外的情況發生。現階段我們採用的檢查方式,分成兩個步驟: 第一步先檢查檔案是否為unicode編碼,可藉由檢查byte order mark (BOM是位於檔案一開始的標示,可藉以判斷隨後的字串是採用何種unicode編碼)即可知道檔案是否採用了unicode編碼,因為現在已經有相當多的檔案採用了unicode的編碼方式,意即我們檢查的檔案出現unicode編碼的機率相當大,所以當檔案出現BOM的標示時,此檔案可隨即歸納為非Big5編碼的檔案,則完成檔案編碼的檢查。假使檔案非unicode編碼,則進入第二步驟的檢查方式,由於程式撰寫語言是採用JAVA,JAVA將檔案讀取轉為內部的字串型態(String)時,JAVA會把無法在編碼表裡對應轉換的字元以字元碼U+FFFD代替。因此第二步驟會掃描計算整個檔案轉換到JAVA的字串型態後出現的U+FFFD數目(轉換採用的編碼表為Big5),我們設定當U+FFFD的總數超過15時,則假設此檔案很可能非採用Big5編碼。

Parameters:
des - File XML檔案
Returns:
boolean true-檔案編碼為Big5

isEncodingAttrBig5

public boolean isEncodingAttrBig5(java.io.File des)
Encoding屬性值是否等於Big5:由於限定處理的檔案編碼為Big5,所以在XML檔案一開始的第一行,即XML檔案進行版本及使用編碼宣告處,如<?xml version="1.0" encoding="Big5"?>,Encoding屬性必須為Big5。

Parameters:
des - File XML檔案
Returns:
boolean true-Encoding屬性值等於Big5

collectMsg

public java.util.HashMap collectMsg(java.io.File des)