60693, "urlkey"=>"innovacion", "name"=>"Innovaci\xF3n"} 我尝试使用 Mongoid 将其保存到 M-6ren">
gpt4 book ai didi

ruby - 为什么\xF3 不被识别为 UTF-8

转载 作者:可可西里 更新时间:2023-11-01 10:01:25 25 4
gpt4 key购买 nike

我有这个散列:

a={"topic_id"=>60693, "urlkey"=>"innovacion", "name"=>"Innovaci\xF3n"}

我尝试使用 Mongoid 将其保存到 MongoDB,但出现此错误:

BSON::InvalidStringEncoding: String not valid UTF-8

然后我尝试gsub它:

a["name"].gsub(/\xF3/,"o")

我得到:SyntaxError: (pry):12: too short escaped multibyte character:/\xF3/

我在我的模型文件的开头添加了一个神奇的注释:# encoding: UTF-8

最佳答案

十六进制 0xF3 本身不是有效的 UTF-8。大于 0x7F 的值都是多字节字符。是什么让您认为它应该是 UTF-8?

您可以在此处阅读允许的序列:http://en.wikipedia.org/wiki/UTF-8#Description

如果您需要强制 ruby​​ 字符串采用允许任意字节序列的编码,您可以将其强制为二进制:

str.force_encoding("BINARY")

使用二进制编码,#gsub 和其他依赖有效编码的字符串操作将按字节而不是按字符进行。

关于ruby - 为什么\xF3 不被识别为 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10979590/

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