gpt4 book ai didi

ruby - Ruby 2.0 中的二进制字符串文字

转载 作者:数据小太阳 更新时间:2023-10-29 06:40:39 25 4
gpt4 key购买 nike

当升级到 Ruby 2.0 时,一个测试用例开始失败:

expected = "\xD1\x9B\x86"
assert_equal expected, actual

带有以下消息:

<"ћ\x86"> expected but was
<"\xD1\x9B\x86">.

actual 变量包含从外部库调用中获得的二进制字符串。

问题是源文件的默认编码(以及字符串文字)changed in Ruby 2.0从 US-ASCII 到 UTF-8。

最佳答案

解决方案是更改字符串文字的定义以强制执行其编码。有几个可能的选择可以做到这一点:

使用Array#pack (所有版本的 Ruby):

expected = ["d19b86"].pack('H*')

使用String#b (仅限 Ruby >= 2.0):

expected = "\xD1\x9B\x86".b

使用String#force_encoding (仅限 Ruby >= 1.9):

expected = "\xD1\x9B\x86".force_encoding("ASCII-8BIT")

关于ruby - Ruby 2.0 中的二进制字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15843684/

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