在Ruby 2.1中将ISO-2022-JP-2转换为UTF-8

马克·甘西基

我有一个ISO-2022-JP-2字符串,需要将其转换为UTF-8,但出现错误。

更具体地说:我正在尝试阅读使用quoted-printable传输的电子邮件。这封电子邮件包含单词tōtatsu(请注意o上方的重音符号),我正在像这样转换给定的文本:

given = "t=1B$(D+W=1B(Btatsu"
text = given.unpack("M*").first   #convert from quoted-printable

基本上,它将替换=1B为适当的\e转义字符,并且字符串text变为t␛$(D+W␛(Btatsu

Wikipedia表示该语言␛$(D用于切换至JIS X 0212-1990,同样␛(B用于切换回ASCII。请注意,这␛$(D是ISO-2022-JP-2中的新功能,不是原始ISO-2022-JP的一部分。

但是,字符串的编码仍然是ASCII,所以我猜我必须强制使用正确的编码,因为Ruby无法知道实际的字符串是ISO-2022-JP-2?

puts text.encoding # ASCII-8BIT
text = text.force_encoding('iso-2022-jp-2')

现在事实证明

text.encode('utf-8')

无法转换给定的字符串: code converter not found (ISO-2022-JP-2 to UTF-8) (Encoding::ConverterNotFoundError)

如何将此字符串转换为UTF-8?

虚假的

似乎Ruby 2.1不支持iso-2022-jp-2编码:

>> "t\e$(D+W\e(Btatsu".encode('utf-8', 'iso-8859-1')
=> "t\e$(D+W\e(Btatsu"

>> "t\e$(D+W\e(Btatsu".encode('utf-8', 'iso-2022-jp-2')
Encoding::ConverterNotFoundError: code converter not found (ISO-2022-JP-2 to UTF-8)
        from (irb):1:in `encode'
        from (irb):1
        from /home/falsetru/.rvm/rubies/ruby-2.1.2/bin/irb:11:in `<main>'

您可以iconv改用:

require 'iconv'
Iconv.conv('utf-8', 'iso-2022-jp-2', "t\e$(D+W\e(Btatsu")
# => "tōtatsu"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Ruby 2.1中将ISO-2022-JP-2转换为UTF-8

来自分类Dev

如何在Ruby 2.0中将UTF-8转换为ISO-8859-1?

来自分类Dev

将UTF-8转换为ISO-8859-2(抛光)

来自分类Dev

Symfony2 + Doctrine:如何将iso8859-1转换为utf-8,反之亦然?

来自分类Dev

使用ICU库将UTF-8转换为UCS-2

来自分类Dev

通过BATCH将UCS 2转换为UTF8

来自分类Dev

将string.decode('utf8')从python2转换为python3

来自分类Dev

将string.decode('utf8')从python2转换为python3

来自分类Dev

使用Dart语言将字符串从ISO-8859-2转换为UTF-8

来自分类Dev

使用Dart语言将字符串从ISO-8859-2转换为UTF-8

来自分类Dev

Ruby将字符串编码从ISO-8859-1转换为UTF-8无效

来自分类Dev

在Ruby中将字符串从UTF-8转换为ASCII-8BIT?

来自分类Dev

lix剂将编码EUC-KR(JP,CH)...转换为UTF-8

来自分类Dev

如何使用Java在ImageJ2中将图像从8位转换为RGB

来自分类Dev

将SQL Server中的文本值从UTF8转换为ISO 8859-1

来自分类Dev

在Delphi中将UTF8转换为ANSI(ISO-8859-1)

来自分类Dev

如何在Ruby中将UCS-2字节数组转换为UTF-8字符串?

来自分类Dev

将iso-8859-1转换为utf-8 javascript

来自分类Dev

Javascript将字符串从utf-8转换为iso-8859-1

来自分类Dev

将ISO-8859-1转换为utf-8(øæå)

来自分类Dev

将字符从ISO-8859-1转换为Javascript中的UTF-8编码时,保持字符表示

来自分类Dev

Perl中将utf8转换为html实体

来自分类Dev

如何在python 3.5中将1/2转换为2

来自分类Dev

从ISO-8859-2转换为ORACLE字符集AL16UTF16

来自分类Dev

将UTF-8转换为字符串

来自分类Dev

在C ++中使用utf8库将UTF 16转换为UTF8

来自分类Dev

从UTF8转换为ISO 8859-5,改为获取ISO 8859-1

来自分类Dev

使用Python在iso-2022-jp编码上使用正则表达式

来自分类Dev

无法在ruby1.9.3中将编码为“ gb2312”的“ [”转换为“ utf-8”

Related 相关文章

  1. 1

    在Ruby 2.1中将ISO-2022-JP-2转换为UTF-8

  2. 2

    如何在Ruby 2.0中将UTF-8转换为ISO-8859-1?

  3. 3

    将UTF-8转换为ISO-8859-2(抛光)

  4. 4

    Symfony2 + Doctrine:如何将iso8859-1转换为utf-8,反之亦然?

  5. 5

    使用ICU库将UTF-8转换为UCS-2

  6. 6

    通过BATCH将UCS 2转换为UTF8

  7. 7

    将string.decode('utf8')从python2转换为python3

  8. 8

    将string.decode('utf8')从python2转换为python3

  9. 9

    使用Dart语言将字符串从ISO-8859-2转换为UTF-8

  10. 10

    使用Dart语言将字符串从ISO-8859-2转换为UTF-8

  11. 11

    Ruby将字符串编码从ISO-8859-1转换为UTF-8无效

  12. 12

    在Ruby中将字符串从UTF-8转换为ASCII-8BIT?

  13. 13

    lix剂将编码EUC-KR(JP,CH)...转换为UTF-8

  14. 14

    如何使用Java在ImageJ2中将图像从8位转换为RGB

  15. 15

    将SQL Server中的文本值从UTF8转换为ISO 8859-1

  16. 16

    在Delphi中将UTF8转换为ANSI(ISO-8859-1)

  17. 17

    如何在Ruby中将UCS-2字节数组转换为UTF-8字符串?

  18. 18

    将iso-8859-1转换为utf-8 javascript

  19. 19

    Javascript将字符串从utf-8转换为iso-8859-1

  20. 20

    将ISO-8859-1转换为utf-8(øæå)

  21. 21

    将字符从ISO-8859-1转换为Javascript中的UTF-8编码时,保持字符表示

  22. 22

    Perl中将utf8转换为html实体

  23. 23

    如何在python 3.5中将1/2转换为2

  24. 24

    从ISO-8859-2转换为ORACLE字符集AL16UTF16

  25. 25

    将UTF-8转换为字符串

  26. 26

    在C ++中使用utf8库将UTF 16转换为UTF8

  27. 27

    从UTF8转换为ISO 8859-5,改为获取ISO 8859-1

  28. 28

    使用Python在iso-2022-jp编码上使用正则表达式

  29. 29

    无法在ruby1.9.3中将编码为“ gb2312”的“ [”转换为“ utf-8”

热门标签

归档