如何在Ruby 2.0中将UTF-8转换为ISO-8859-1?
发布时间:2020-12-16 23:19:06 所属栏目:百科 来源:网络整理
导读:如果您没有在它们之间进行转换,则(日期)时间和字符串编码的时区是没有问题的.在 Ruby 1.9和2.0中,编码似乎是较旧的Ruby版本的新时区,它们只引起麻烦. Iconv已被本机编码功能取代.如何从标准 UTF-8转换为 ISO-8859-1,例如在Windows系统中使用?在Ruby 2.0控制
如果您没有在它们之间进行转换,则(日期)时间和字符串编码的时区是没有问题的.在
Ruby 1.9和2.0中,编码似乎是较旧的Ruby版本的新时区,它们只引起麻烦.
Iconv已被本机编码功能取代.如何从标准
UTF-8转换为
ISO-8859-1,例如在Windows系统中使用?在Ruby 2.0控制台中
encode function不起作用,虽然它应该能够通过编码(dst_encoding,src_encoding)→str从源编码转换为目标编码?
>> "ABC ??ü??ü".encoding => #<Encoding:UTF-8> >> "ABC ??ü??ü".encode("UTF-8").encode("ISO-8859-1") => "ABC xE4xF6xFCxC4xD6xDC" >> "ABC ??ü??ü".encode("ISO-8859-1","UTF-8") => "ABC xE4xF6xFCxC4xD6xDC" 我在Linux系统上使用Ruby 2.0.0(修订版41674). 解决方法encode 方法确实有效.
让我们用U 00FC(ü)创建一个字符串: uuml_utf8 = "u00FC" #=> "ü" Ruby以UTF-8编码此字符串: uuml_utf8.encoding #=> #<Encoding:UTF-8> 在UTF-8中,ü表示为195 188(十进制): uuml_utf8.bytes #=> [195,188] 现在让我们将字符串转换为ISO-8859-1: uuml_latin1 = uuml_utf8.encode("ISO-8859-1") uuml_latin1.encoding #=> #<Encoding:ISO-8859-1> 在ISO-8859-1中,ü表示为252(十进制): uuml_latin1.bytes #=> [252] 在UTF-8中,252是无效序列.这就是你的终端/控制台显示替换字符“ ”(U FFFD)或根本没有字符的原因. 为了显示ISO-8859-1编码字符,您还必须将终端/控制台切换为该编码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |