Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将包含\x字符的编码字符串转换为JSON_Ruby On Rails_Json_Ruby_Utf 8_Ascii 8bit - Fatal编程技术网

Ruby on rails 将包含\x字符的编码字符串转换为JSON

Ruby on rails 将包含\x字符的编码字符串转换为JSON,ruby-on-rails,json,ruby,utf-8,ascii-8bit,Ruby On Rails,Json,Ruby,Utf 8,Ascii 8bit,我正在尝试转换为JSON,一个包含反斜杠x编码字符的字符串 data = "{\"schema\":\"iglu\", \"data\": \"hellox\E2\x80\x99s\"}" data.to_json 但是,我得到以下错误: JSON::GeneratorError:源序列非法/格式错误utf-8 来自/Users/user1/.rvm/gems/ruby-2.5。5@tagtrue/gems/activesupport-4.2.11.1/lib/active\u support

我正在尝试转换为JSON,一个包含反斜杠x编码字符的字符串

data = "{\"schema\":\"iglu\", \"data\": \"hellox\E2\x80\x99s\"}"
data.to_json
但是,我得到以下错误: JSON::GeneratorError:源序列非法/格式错误utf-8 来自/Users/user1/.rvm/gems/ruby-2.5。5@tagtrue/gems/activesupport-4.2.11.1/lib/active\u support/core\u ext/object/json.rb:34:in`to\u json' 由编码引起::未定义的转换器错误:“\xE2”从ASCII-8BIT到UTF-8


我如何才能使用json传递数据?

这个解决方案对我很有效:


数据。强制编码('utf-8')

似乎
数据
没有正确的编码(
ASCII-8BIT
用于二进制数据)。
\xE2
代表什么字符?@Stefan是的,这是一个包含ASCII-8BIT字符的字符串,我正在尝试将其转换为JSON\xE2只是一个随机的ASCII-8位字符。但是我使用的实际字符串有100多个这样的字符。ASCII仅定义0到127之间的字符
\xE2
是代码点226,它不是有效的ASCII字符(因此转换错误)。我问过它代表什么字符,这样我们就可以计算出字符串的实际编码。@Stefan原始字符串太长,但它有“card\xE2\x80\x99s”,其中\xE2\x80\x99代表右单引号,正如我在这里的
data.force_encoding('utf-8')表中找到的那样
应该注意这个技巧——它告诉Ruby字符串实际上是UTF-8。您应该使用原始字符串中的实际数据更新问题,因为
\xE2
本身不是UTF-8中的有效代码点,无法转换。