当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。