Provides a number of static methods which interact with java.nio.charset.Charset to analyze and transform the strings identifing character encodings. : String char « Data Type « Java






Provides a number of static methods which interact with java.nio.charset.Charset to analyze and transform the strings identifing character encodings.

    
/*
 * (c) Copyright 2005, 2006, 2007, 2008, 2009 Hewlett-Packard Development Company, LP
 * [See end of file]
 */

//package org.mulgara.jena.util;

import java.nio.charset.Charset;
import java.util.HashSet;
import java.util.Set;

/**
 * 
 * This class provides a number of static methods which interact with
 * java.nio.charset.Charset to analyze and transform the strings identifing
 * character encodings.
 * 
 * @author Jeremy J. Carroll
 * 
 */
abstract public class CharEncoding {
  static Set<String> macEncodings = new HashSet<String>();
  static {
    macEncodings.add("MacArabic");
    macEncodings.add("MacCentralEurope");
    macEncodings.add("MacCroatian");
    macEncodings.add("MacCyrillic");
    macEncodings.add("MacDingbat");
    macEncodings.add("MacGreek");
    macEncodings.add("MacHebrew");
    macEncodings.add("MacIceland");
    macEncodings.add("MacRoman");
    macEncodings.add("MacRomania");
    macEncodings.add("MacSymbol");
    macEncodings.add("MacThai");
    macEncodings.add("MacTurkish");
    macEncodings.add("MacUkraine");
  }
  private String name;

  private CharEncoding() {
  }

  private CharEncoding(String name) {
    this.name = name;
  }

  /**
   * Gives the canonical name for this charset. If {@link #isIANA()} returns
   * true, then this is the name registered at IANA. If {@link #isInNIO()}
   * returns true, and {@link #isIANA()} returns false, then this name will
   * start with "x-". The name is case insensitive, but not case normalized.
   * 
   * @return Canonical name.
   */
  public String name() {
    return name;
  }

  /**
   * Returns true if this charset registered at IANA. Since the registry may
   * change, the results of this method may not be entirely up-to-date, and
   * draws from the knowledge in the Java java.nio.charset.Charset class. If
   * {@link #isInNIO()} returns false, no information is known, and this
   * method returns false.
   * 
   * @return true if this character encoding is IANA registered.
   */

  abstract public boolean isIANA();

  /**
   * Returns true if this charset is supported by java.nio.charset.Charset.
   * Without this support {@link #isIANA()} does not work correctly.
   * 
   * @return true if this charset is supported by java.nio.charset.Charset.
   */
  abstract public boolean isInNIO();

  /**
   * If {@link #isIANA} or {@link #isInNIO} return false, this returns a
   * suggested warning message. If {@link #isIANA} is true, then this returns
   * null.
   * 
   * @return A message (or null)
   */
  abstract public String warningMessage();

  static private class IANAnioEncoding extends CharEncoding {
    IANAnioEncoding(String name) {
      super(name);
    }

    @Override
    public boolean isIANA() {
      return true;
    }

    @Override
    public boolean isInNIO() {
      return true;
    }

    @Override
    public String warningMessage() {
      return null;
    }
  }

  static private class NonIANAnioEncoding extends CharEncoding {
    NonIANAnioEncoding(String name) {
      super(name);
    }

    @Override
    public boolean isIANA() {
      return false;
    }

    @Override
    public boolean isInNIO() {
      return true;
    }

    @Override
    public String warningMessage() {
      return "The encoding \""
          + name()
          + "\" is not registered with IANA, and hence not suitable for Web content.";
    }
  }

  static private class NotNioEncoding extends CharEncoding {
    NotNioEncoding(String name) {
      super(name);
    }

    @Override
    public boolean isIANA() {
      return false;
    }

    @Override
    public boolean isInNIO() {
      return false;
    }

    @Override
    public String warningMessage() {
      return "The encoding \""
          + name()
          + "\" is not fully supported; maybe try using Java 1.5 or higher (if you are not already).";
    }
  }

  /**
   * Create a new CharacterEncoding object, given a name of a character
   * encoding identifying it.
   * 
   * @param enc
   *            A name.
   * @return The corresponding CharacterEncoding object.
   */
  static public CharEncoding create(String enc) {
    if (Charset.isSupported(enc)) {
      String nm = Charset.forName(enc).name();
      if (nm.charAt(1) == '-'
          && (nm.charAt(0) == 'x' || nm.charAt(0) == 'X'))
        return new NonIANAnioEncoding(nm);
      else if (nm.startsWith("Mac") && macEncodings.contains(nm))
        return new NonIANAnioEncoding(nm);
      else
        return new IANAnioEncoding(nm);
    } else {
      return new NotNioEncoding(enc);
    }
  }
}

/*
 * (c) Copyright 2005, 2006, 2007, 2008, 2009 Hewlett-Packard Development
 * Company, LP All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * 1. Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer. 2. Redistributions in
 * binary form must reproduce the above copyright notice, this list of
 * conditions and the following disclaimer in the documentation and/or other
 * materials provided with the distribution. 3. The name of the author may not
 * be used to endorse or promote products derived from this software without
 * specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

   
    
    
    
  








Related examples in the same category

1.StrCharAt - show String.charAt()
2.Basic tab-character handling stuff
3.Convert Characters to Lower Case
4.Convert Characters to Upper Case
5.Replace Characters in a String
6.Character array to String conversion
7.Convert String to character array
8.Last occurrence of a character
9.Extract Ascii codes from a String
10.To remove a character
11.Removes specified chars from a string
12.Checks if a String is not empty (""), not null and not whitespace only.
13.Checks if a String is whitespace, empty ("") or null.
14.Checks if the String contains any character in the given set of characters.
15.Checks if the String contains only certain characters.
16.Checks if the String contains only whitespace.
17.Checks if the string contains only ASCII printable characters.
18.Checks that the String does not contain certain characters.
19.The character array based string
20.Checks whether the String contains only digit characters.
21.Remove char from a string
22.Remove whitespace from the ends as well as excessive whitespace within the inside of the string between non-whitespace characters.
23.Removes any hypens ( - ) from the given string
24.Returns a new string with all the whitespace removed
25.Is char a white space character
26.Simple scanner that allows to navigate over the characters of a string.
27.Returns a string with size of count and all characters initialized with ch.
28.Returns a string that contains all characters of the given string in reverse order.
29.Returns a string that is equivalent to the specified string with its first character converted to uppercase
30.Count the number of occurrences of character c in a string.
31.A fast way to convert character arrays into Strings.
32.XML utilities that pertain to character handling (markup or character data), without use of any XML libraries.
33.Check whether the given String contains any whitespace characters.
34.Character utilities.
35.Operations on char primitives and Character objects.
36.Cleans strings of illegal characters with respect to the XML specification.
37.Return the result of adding the specified character to the specified sorted character array.
38.Return a displayable version of the character sequence, followed by integer positions at various powers of 10.
39.Returns the string constructed from the specified character sequence by deaccenting each of its characters.
40.Returns a hash code for a character sequence that is equivalent to the hash code generated for a its string yield.
41.Return true if the two character sequences have the same length and the same characters.
42.Returns an array of substrings of the specified string, in order, with divisions before and after any instance of the specified character.
43.Returns true if specified character is a punctuation character.
44.Appends a whitespace-normalized form of the specified character sequence into the specified string buffer.
45.Determine whether characters may appear in certain roles in XML documents.
46.Advanced navigation over the underlying string.
47.Compare two char sequences
48.Contents As CharSequence