class Mysql::Charset

@!attribute [r] number

@private

@!attribute [r] name

@return [String] charset name

@!attribute [r] csname

@return [String] collation name

Constants

BINARY_CHARSET_NUMBER

@private

CHARSETS
[charset_number, charset_name, collation_name, default], …

@private

CHARSET_DEFAULT

@private

CHARSET_ENCODING

@private MySQL Charset -> Ruby’s Encoding

COLLATION_TO_CHARSET

@private

NUMBER_TO_CHARSET

@private

Attributes

csname[R]
name[R]
number[R]

Public Class Methods

by_name(str) click to toggle source

@private @param [String] str @return [Mysql::Charset]

# File lib/mysql/charset.rb, line 359
def self.by_name(str)
  ret = COLLATION_TO_CHARSET[str] || CHARSET_DEFAULT[str]
  raise ClientError, "unknown charset: #{str}" unless ret
  ret
end
by_number(n) click to toggle source

@private @param [Integer] n @return [Mysql::Charset]

# File lib/mysql/charset.rb, line 351
def self.by_number(n)
  raise ClientError, "unknown charset number: #{n}" unless NUMBER_TO_CHARSET.key? n
  NUMBER_TO_CHARSET[n]
end
convert_encoding(raw, encoding) click to toggle source

@private convert raw to encoding and convert to Encoding.default_internal @param [String] raw @param [Encoding] encoding @return [String] result

# File lib/mysql/charset.rb, line 424
def self.convert_encoding(raw, encoding)
  raw.force_encoding(encoding).encode
end
new(number, name, csname) click to toggle source

@private @param [Integer] number @param [String] name @param [String] csname

# File lib/mysql/charset.rb, line 18
def initialize(number, name, csname)
  @number, @name, @csname = number, name, csname
end
to_binary(value) click to toggle source

@private @param [String] value @return [String]

# File lib/mysql/charset.rb, line 415
def self.to_binary(value)
  value.force_encoding Encoding::ASCII_8BIT
end

Public Instance Methods

convert(value) click to toggle source

@private convert encoding to corrensponding to MySQL charset @param [String] value @return [String]

# File lib/mysql/charset.rb, line 441
def convert(value)
  if value.is_a? String and value.encoding != Encoding::ASCII_8BIT
    value = value.encode encoding
  end
  value
end
encoding() click to toggle source

@private retrun corresponding Ruby encoding @return [Encoding] encoding

# File lib/mysql/charset.rb, line 431
def encoding
  enc = CHARSET_ENCODING[@name.downcase]
  raise Mysql::ClientError, "unsupported charset: #{@name}" unless enc
  enc
end