當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Ruby Converter.new用法及代碼示例


本文簡要介紹ruby語言中 Encoding::Converter.new 的用法。

用法

Encoding::Converter.new(source_encoding, destination_encoding)
Encoding::Converter.new(source_encoding, destination_encoding, opt)
Encoding::Converter.new(convpath)

可能的選項元素:

hash form:
  :invalid => nil            # raise error on invalid byte sequence (default)
  :invalid => :replace       # replace invalid byte sequence
  :undef => nil              # raise error on undefined conversion (default)
  :undef => :replace         # replace undefined conversion
  :replace => string         # replacement string ("?" or "\uFFFD" if not specified)
  :newline => :universal     # decorator for converting CRLF and CR to LF
  :newline => :crlf          # decorator for converting LF to CRLF
  :newline => :cr            # decorator for converting LF to CR
  :universal_newline => true # decorator for converting CRLF and CR to LF
  :crlf_newline => true      # decorator for converting LF to CRLF
  :cr_newline => true        # decorator for converting LF to CR
  :xml => :text              # escape as XML CharData.
  :xml => :attr              # escape as XML AttValue
integer form:
  Encoding::Converter::INVALID_REPLACE
  Encoding::Converter::UNDEF_REPLACE
  Encoding::Converter::UNDEF_HEX_CHARREF
  Encoding::Converter::UNIVERSAL_NEWLINE_DECORATOR
  Encoding::Converter::CRLF_NEWLINE_DECORATOR
  Encoding::Converter::CR_NEWLINE_DECORATOR
  Encoding::Converter::XML_TEXT_DECORATOR
  Encoding::Converter::XML_ATTR_CONTENT_DECORATOR
  Encoding::Converter::XML_ATTR_QUOTE_DECORATOR

Encoding::Converter.new 創建 Encoding::Converter 的實例。

Source_encoding 和 destination_encoding 應該是字符串或 Encoding 對象。

opt 應為 nil、散列或整數。

convpath 應該是一個數組。 convpath 可能包含

  • 包含編碼或編碼名稱的二元素數組,或

  • 表示裝飾器名稱的字符串。

Encoding::Converter.new 可選地采用一個選項。該選項應該是散列或整數。選項哈希可以包含 :invalid => nil 等。選項整數應該是 logical-or 的常量,例如 Encoding::Converter::INVALID_REPLACE 等。

:invalid => 無

在無效字節序列上引發錯誤。這是默認行為。

:invalid =>:replace

用替換字符串替換無效的字節序列。

:undef => 無

如果 source_encoding 中的字符未在 destination_encoding 中定義,則會引發錯誤。這是默認行為。

:undef =>:替換

用替換字符串替換 destination_encoding 中的未定義字符。

:replace => 字符串

指定替換字符串。如果未指定,“uFFFD” 用於 Unicode 編碼,“?” 用於其他編碼。

:universal_newline => 真

將 CRLF 和 CR 轉換為 LF。

:crlf_newline => 真

將 LF 轉換為 CRLF。

:cr_newline => 真

將 LF 轉換為 CR。

:xml =>:文本

轉義為 XML CharData。此表單可用作 HTML 4.0 PCDATA。

  • ‘&’ -> ‘&’

  • ‘<’ -> ‘<’

  • ‘>’ -> ‘>’

  • destination_encoding 中的未定義字符 -> 十六進製 CharRef 例如 <s

:xml =>:attr

轉義為 XML AttValue。轉換後的結果引用為“…”。此表單可用作 HTML 4.0 屬性值。

  • ‘&’ -> ‘&’

  • ‘<’ -> ‘<’

  • ‘>’ -> ‘>’

  • ‘“’ -> ‘”’

  • destination_encoding 中的未定義字符 -> 十六進製 CharRef 例如 <s

例子:

# UTF-16BE to UTF-8
ec = Encoding::Converter.new("UTF-16BE", "UTF-8")

# Usually, decorators such as newline conversion are inserted last.
ec = Encoding::Converter.new("UTF-16BE", "UTF-8", :universal_newline => true)
p ec.convpath #=> [[#<Encoding:UTF-16BE>, #<Encoding:UTF-8>],
              #    "universal_newline"]

# But, if the last encoding is ASCII incompatible,
# decorators are inserted before the last conversion.
ec = Encoding::Converter.new("UTF-8", "UTF-16BE", :crlf_newline => true)
p ec.convpath #=> ["crlf_newline",
              #    [#<Encoding:UTF-8>, #<Encoding:UTF-16BE>]]

# Conversion path can be specified directly.
ec = Encoding::Converter.new(["universal_newline", ["EUC-JP", "UTF-8"], ["UTF-8", "UTF-16BE"]])
p ec.convpath #=> ["universal_newline",
              #    [#<Encoding:EUC-JP>, #<Encoding:UTF-8>],
              #    [#<Encoding:UTF-8>, #<Encoding:UTF-16BE>]]

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Converter.new。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。