Class FileEncodingUtils

java.lang.Object
com.suncode.pwfl.util.io.FileEncodingUtils

public abstract class FileEncodingUtils extends Object
Klasa pomocnicza zawierające metody związane z kodowaniem plików.
Author:
Cezary Kozar
  • Constructor Details

    • FileEncodingUtils

      public FileEncodingUtils()
  • Method Details

    • detectXmlEncoding

      public static Charset detectXmlEncoding(File xmlFile) throws IOException
      Wykrywa kodowanie pliku xml na podstawie przesłanek zawartych na stronie: Extensible Markup Language (XML) 1.0 w rozdziale Autodetection of Character Encodings
      Parameters:
      xmlFile - dowolny plik xml
      Returns:
      używane kodowanie pliku lub kodowanie domyślne @{link Charset.defaultCharset()
      Throws:
      IOException
    • detectXmlEncoding

      public static Charset detectXmlEncoding(InputStream inputStream) throws IOException
      Wykrywa kodowanie pliku xml na podstawie przesłanek zawartych na stronie: Extensible Markup Language (XML) 1.0 w rozdziale Autodetection of Character Encodings
       Odczytanie kodowania pliku musi być jak najszybsze, dlatego plik nie jest parsowany. 
       Ustalenie kodowania pliku xml przebiega następująco:
       
        1. sprawdzany jest znacznik BOM, jeżeli znacznik taki jest obecny, zwracane jest kodowanie zapisane w tym znaczniku
        2. odczytywana jest rodzina kodowania, potrzebna do odczytania definicji pliku xml w postaci:
           <?xml version="1.0" encoding="UTF-8"?>
        3. na podstawie wykrytego kodowania odczytywany jest atrybut encoding nagłówka
       
        Jeżeli któraś z operacji się nie powiedzie, zwracane jest domyślne kodowanie JVM Charset.defaultCharset().
       
       
      Parameters:
      inputStream - strumień pliku xml. Strumień musi wspierać metodę InputStream.mark(int)
      Returns:
      Używane kodowanie pliku xml
      Throws:
      IOException
    • detectBomEncoding

      public static Charset detectBomEncoding(InputStream inputStream) throws IOException
      Funkcja odczytuje kodowanie na podstawie znacznika BOM zawartego na początku strumienia. Jeżeli znacznik BOM istnieje, zwracane jest kodowanie strumienia. Po odczytaniu strumień jest resetowany oraz pomijane są bajty znacznika BOM.
      Parameters:
      inputStream - strumień danych
      Returns:
      kodowanie odczytane ze znacznika BOM lub null jeżeli taki znacznik nie istnieje.
      Throws:
      IOException