gpt4 book ai didi

ruby-on-rails - "\x90"从 ASCII-8BIT 到 UTF-8 错误轨

转载 作者:数据小太阳 更新时间:2023-10-29 07:20:08 24 4
gpt4 key购买 nike

我正在 Rails 应用程序中制作 API,但我在编码方面遇到了一些问题,看起来是这样。我实际上不确定实际错误是什么。我写了一个模块,里面有两个类。其中一个用于获取域的一些DNS记录。当我自己实例化该类并调用它工作正常的方法时,但是当我在我的 Rails 应用程序中运行它时,我被抛出一个错误,提示 "\x90"from ASCII-8BIT to UTF-8

这是我类的一点

#
# Class initializer to set instance variable with domain
#
def initialize(domain)
@domain = domain
end

#
# Generates hash to be used in other methods
# @returns a hash with usefull info and made ready for later input
#
def generate_hash
hash = {
'timestamp' => Time.now.to_i,
'credits_remaining' => 123,
'response' => {
'domain' => @domain,
'records' => {}
}
}
return hash
end

#
# Get A Records for a domain
# @returns JSON formatted hash
#
def get_a_records
data = self.generate_hash
Resolv::DNS.open do |dns|
ress = dns.getresources @domain, Resolv::DNS::Resource::IN::A
p = ress.map { |r| r.address }
data['response']['records']['a'] = p
end
return data.to_json
end

从我的 Controller :

require 'domainapi'
class CallsController < ApplicationController

def index
render json: {'status': 'OK'}
end

def dns
dns = DomainAPI::Dns.new(params[:domain])
response = dns.get_a_records
render json: response
end

end

我类的 index 方法工作得很好。我像这样查询我的 api http://api.lvh.me:3000/v1/dns/a/stackoverflow.com

lvh.me 域是我使用的域,因此我可以在本地使用子域。有人可以看出可能是什么错误,或者对我可以做什么提出建议吗?

更新

我发现尝试不同的域会引发不同的错误。google.com 抛出:"\xF2"从 ASCII-8BIT 到 UTF-8facebook.com 抛出:"\xAD"从 ASCII-8BIT 到 UTF-8rubyonrails.org 表示:"\xC0"从 ASCII-8BIT 到 UTF-8

最佳答案

它似乎也与您从 Resolv 收到的原始地址的格式有关。您为地址的每个八位字节得到一个字节,所以我认为这也可以修复错误:

p = ress.map { |r| r.address.address.chars.map { |b| b.unpack 'C' }.join '.' }

但不确定此时是否有帮助。 😋

示例输出:

> Resolv::DNS.open do |dns|
* ress = dns.getresources 'www.example.com', Resolv::DNS::Resource::IN::A
* p = ress.map {|r| r.address.address.chars.map {|b| b.unpack 'C' }.join '.' }
* data['response']['records']['a'] = p
* end

...

> data.to_json
=> "{\"response\":{\"records\":{\"a\":[\"93.184.216.34\"]}}}"

关于ruby-on-rails - "\x90"从 ASCII-8BIT 到 UTF-8 错误轨,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30802024/

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