使用相同的 utf-8 编码在 Ruby 中比较相同的字符串失败

时间:2021-07-27 15:53:19

标签: ruby

一侧的字符串来自服务器抓取,因此它们可能不同,但看起来相同:

irb(main):013:0> "‎italy" == "italy"
=> false

我检查了编码,结果是一样的

irb(main):014:0> "‎italy".encoding === "italy".encoding
=> true

irb(main):016:0> "‎italy".encoding
=> #<Encoding:UTF-8>

为什么它们不同 (==) ?

1 个答案:

答案 0 :(得分:2)

第一个字符串的开头包含一个 LEFT-TO-RIGHT MARK。当您打印字符串时,这不可见,但这确实意味着字符串不同。比较对字符串调用 byteschars 的结果。

您需要在处理字符串之前将其剥离。