gpt4 book ai didi

ruby - 无法将编码为 "["的 "gb2312"转换为 ruby​​1.9.3 中的 "utf-8"

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:50 24 4
gpt4 key购买 nike

我正在学习 ruby​​ 并尝试从 ftp 服务器获取文件名。我得到的字符串是用gb2312(简体中文)编码的,在大多数情况下使用这些编码是成功的:

str = str.force_encoding("gb2312")
str = str.encode("utf-8")

但如果字符串包含符号 ,它会出错 "in encode': "\xFD"followed by "\x88"on GB2312 (Encoding::InvalidByteSequenceError)" [""【".

最佳答案

Ruby 编码允许进行大量的自省(introspection)。这样,您就可以很好地了解如何处理给定的字符串:

"【".encoding
=> #<Encoding:UTF-8>
"【".valid_encoding?
=> true
"【".force_encoding("gb2312").valid_encoding?
=> false

说明这个字符不符合给定的字符集!如果您需要转换所有这些字符,您可以使用 encode 方法并提供默认值或替换未定义的字符,如下所示:

"【".encode("gb2312", invalid: :replace, undef: :replace)
=> "\x{A1BE}"

如果您有一个包含混合字符编码的字符串,那您就完蛋了。不经过大量猜测是无法找出答案的。

关于ruby - 无法将编码为 "["的 "gb2312"转换为 ruby​​1.9.3 中的 "utf-8",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19618347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com