Class EncodingService

java.lang.Object
org.jruby.runtime.encoding.EncodingService

public final class EncodingService extends Object
  • Field Details

    • encodings

      private final org.jcodings.util.CaseInsensitiveBytesHash<org.jcodings.EncodingDB.Entry> encodings
    • aliases

      private final org.jcodings.util.CaseInsensitiveBytesHash<org.jcodings.EncodingDB.Entry> aliases
    • encodingList

      private final IRubyObject[] encodingList
    • encodingIndex

      private RubyEncoding[] encodingIndex
    • runtime

      private final Ruby runtime
    • ascii8bit

      private final org.jcodings.Encoding ascii8bit
    • javaDefault

      private final org.jcodings.Encoding javaDefault
    • LOCALE_BL

      private static final ByteList LOCALE_BL
    • EXTERNAL_BL

      private static final ByteList EXTERNAL_BL
    • INTERNAL_BL

      private static final ByteList INTERNAL_BL
    • FILESYSTEM_BL

      private static final ByteList FILESYSTEM_BL
    • MS_CP_PATTERN

      private static final Pattern MS_CP_PATTERN
    • consoleEncoding

      private org.jcodings.Encoding consoleEncoding
    • defaultCharsetName

      private static ByteList defaultCharsetName
  • Constructor Details

    • EncodingService

      public EncodingService(Ruby runtime)
  • Method Details

    • getConsoleEncoding

      public org.jcodings.Encoding getConsoleEncoding()
      Since Java 1.6, class Console is available. But the encoding or codepage of the underlying connected console is currently private. Had to use Reflection to get it.
      Returns:
      console codepage
    • getUSAsciiEncoding

      public org.jcodings.Encoding getUSAsciiEncoding()
    • getAscii8bitEncoding

      public org.jcodings.Encoding getAscii8bitEncoding()
    • getFileSystemEncoding

      public org.jcodings.Encoding getFileSystemEncoding()
    • getEncodings

      public org.jcodings.util.CaseInsensitiveBytesHash<org.jcodings.EncodingDB.Entry> getEncodings()
    • getAliases

      public org.jcodings.util.CaseInsensitiveBytesHash<org.jcodings.EncodingDB.Entry> getAliases()
    • findEncodingEntry

      public org.jcodings.EncodingDB.Entry findEncodingEntry(ByteList bytes)
    • findEncodingEntry

      public org.jcodings.EncodingDB.Entry findEncodingEntry(byte[] bytes)
    • findAliasEntry

      public org.jcodings.EncodingDB.Entry findAliasEntry(ByteList bytes)
    • findAliasEntry

      public org.jcodings.EncodingDB.Entry findAliasEntry(byte[] bytes)
    • findEncodingOrAliasEntry

      public org.jcodings.EncodingDB.Entry findEncodingOrAliasEntry(ByteList bytes)
    • findEncodingOrAliasEntry

      public org.jcodings.EncodingDB.Entry findEncodingOrAliasEntry(byte[] bytes)
    • getLocaleEncoding

      public org.jcodings.Encoding getLocaleEncoding()
    • getEncodingList

      public IRubyObject[] getEncodingList()
    • loadEncoding

      public org.jcodings.Encoding loadEncoding(ByteList name)
    • loadEncodingEntry

      private RubyEncoding loadEncodingEntry(org.jcodings.EncodingDB.Entry entry)
    • getEncoding

      public RubyEncoding getEncoding(org.jcodings.Encoding enc)
    • defineEncodings

      public void defineEncodings()
    • defineAliases

      public void defineAliases()
    • defineEncodingConstant

      private void defineEncodingConstant(Ruby runtime, RubyEncoding encoding, String constName)
    • getDefaultExternal

      public IRubyObject getDefaultExternal()
    • getDefaultInternal

      public IRubyObject getDefaultInternal()
    • convertEncodingToRubyEncoding

      public IRubyObject convertEncodingToRubyEncoding(org.jcodings.Encoding defaultEncoding)
    • findEncodingObject

      public IRubyObject findEncodingObject(byte[] bytes)
    • getJavaDefault

      public org.jcodings.Encoding getJavaDefault()
    • getEncodingFromObject

      public org.jcodings.Encoding getEncodingFromObject(IRubyObject arg)
    • getEncodingFromObjectNoError

      public org.jcodings.Encoding getEncodingFromObjectNoError(IRubyObject arg)
    • getEncodingFromObjectCommon

      private org.jcodings.Encoding getEncodingFromObjectCommon(IRubyObject arg, boolean error)
    • getEncodingFromNKFName

      private org.jcodings.Encoding getEncodingFromNKFName(String name)
    • getEncodingFromString

      public org.jcodings.Encoding getEncodingFromString(String string)
    • findEncoding

      public org.jcodings.Encoding findEncoding(IRubyObject str)
      Find an encoding given a Ruby object, coercing it to a String in the process.
      Parameters:
      str - the object to coerce and use to look up encoding. The coerced String must be ASCII-compatible.
      Returns:
      the Encoding object found, nil (for internal), or raises ArgumentError
    • findEncodingNoError

      public org.jcodings.Encoding findEncodingNoError(IRubyObject str)
      Find an encoding given a Ruby object, coercing it to a String in the process. This version does not raise a Ruby error if it can't find the encoding, and simply returns null.
      Parameters:
      str - the object to coerce and use to look up encoding. The coerced String must be ASCII-compatible.
      Returns:
      the Encoding object found, nil (for internal)
    • findEncodingNoError

      public org.jcodings.Encoding findEncodingNoError(ByteList str)
    • findEncodingCommon

      private org.jcodings.Encoding findEncodingCommon(IRubyObject str, boolean error)
    • findEncodingCommon

      private org.jcodings.Encoding findEncodingCommon(ByteList name, boolean error)
    • findEntry

      public org.jcodings.EncodingDB.Entry findEntry(IRubyObject str)
      Find an encoding given a Ruby object, coercing it to a String in the process.
      Parameters:
      str - the object to coerce and use to look up encoding. The coerced String must be ASCII-compatible.
      Returns:
      the Encoding object found, nil (for internal), or raises ArgumentError
    • rubyEncodingFromObject

      public IRubyObject rubyEncodingFromObject(IRubyObject str)
    • charsetForEncoding

      public Charset charsetForEncoding(org.jcodings.Encoding encoding)
      Get a java.nio Charset for the given encoding, or null if impossible
      Parameters:
      encoding - the encoding
      Returns:
      the charset
    • checkAsciiEncodingName

      private void checkAsciiEncodingName(ByteList name)
    • getWindowsFilesystemEncoding

      public org.jcodings.Encoding getWindowsFilesystemEncoding(Ruby ruby)
    • findEncodingWithError

      public org.jcodings.Encoding findEncodingWithError(ByteList name)
      Find a non-special encoding, raising argument error if it does not exist.
      Parameters:
      name - the name of the encoding to look up
      Returns:
      the Encoding object found, or raises ArgumentError
    • findEntryWithError

      private org.jcodings.EncodingDB.Entry findEntryWithError(ByteList name)
      Find a non-special encoding Entry, raising argument error if it does not exist.
      Parameters:
      name - the name of the encoding to look up
      Returns:
      the EncodingDB.Entry object found, or raises ArgumentError
    • findEntryFromEncoding

      private org.jcodings.EncodingDB.Entry findEntryFromEncoding(org.jcodings.Encoding e)
    • getFileSystemEncoding

      @Deprecated public org.jcodings.Encoding getFileSystemEncoding(Ruby runtime)
      Deprecated.