程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Ruby on Rails Encoding::UndefinedConversionError(“\xF8”从 ASCII-8BIT 到 UTF-8)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Ruby on Rails Encoding::UndefinedConversionError(“\xF8”从 ASCII-8BIT 到 UTF-8)?

开发过程中遇到Ruby on Rails Encoding::UndefinedConversionError(“\xF8”从 ASCII-8BIT 到 UTF-8)的问题如何解决?下面主要结合日常开发的经验,给出你关于Ruby on Rails Encoding::UndefinedConversionError(“\xF8”从 ASCII-8BIT 到 UTF-8)的解决方法建议,希望对你解决Ruby on Rails Encoding::UndefinedConversionError(“\xF8”从 ASCII-8BIT 到 UTF-8)有所启发或帮助;

我看到了一堆具有类似主题的问题,但我找不到解决我的问题的方法。希望有人能提供帮助。

我有一个 Ruby on Rails 应用。在这个应用程序中,我有一些 base64 数据要解码并写入文件。当我有一个通过 ruby​​ myfile.rb 调用的小脚本时,该程序的行为与预期一致。但是,当我使用 rails c 运行相同的代码时。我有以下错误:

TraceBACk (most recent call last):
        7: from (irb):1:in `<main>'
        6: from app/models/node.rb:1:in `<main>'
        5: from app/models/node_manager.rb:317:in `<main>'
        4: from app/models/node_manager.rb:255:in `converT_Base64_to_file'
        3: from app/models/node_manager.rb:255:in `open'
        2: from app/models/node_manager.rb:255:in `block in converT_Base64_to_file'
        1: from app/models/node_manager.rb:255:in `write'
EnCoding::UndefinedConversionError ("\xF8" from ASCII-8BIT to UTF-8)

这是我的文件:

class I wrote in node_manager.rb
class NodeManager
class MacaroonInterceptor < GRPC::ClIEnTinterceptor
    attr_reader :macaroon
  
    def initialize(macaroon)
      @macaroon = macaroon
      super
    end
  
    def request_response(request:,call:,method:,Metadata:)
      Metadata['macaroon'] = macaroon
      yIEld
    end
  
    def server_streamer(request:,Metadata:)
      Metadata['macaroon'] = macaroon
      yIEld
    end
end

def initialize(tls_path,macaroon_path,node_ip)
    @tls_path = tls_path
    @macaroon_path = macaroon_path
    @node_ip = node_ip
    @node = connect(@tls_path,@macaroon_path,@node_ip)
end

def connect(tls_path,node_ip)
    certificate = file.read(file.expand_path(tls_path))
    credentials = GRPC::Core::ChAnnelCredentials.new(certificatE)
    macaroon_binary = file.read(file.expand_path(macaroon_path))
    macaroon = macaroon_binary.each_byte.map { |b| b.to_s(16).rjust(2,'0') }.join
    if stub = Lnrpc::lightning::stub.new(
        node_ip,credentials,interceptors: [NodeManager::MacaroonInterceptor.new(macaroon)],chAnnel_args: {"grpc.max_receive_message_length" => 1024 * 1024 * 50}
    )
        return stub
    else
        puts 'error'
        raise "Could not connect to the node"
    end
end

def get_info()
    begin
        node_info = @node.get_info(Lnrpc::GeTinforequest.new())
        raise LoadError if !node_info
        return @node.get_info(Lnrpc::GeTinforequest.new())
    rescue
        puts "Could not connect to the node"
    end

end

# Class methods

def self.converT_Base64_to_file(directory: nil,file_name:,base64data:)
    if Directory
        file_path = [directory,file_name].join('/')
    else 
        file_path = file_name
    end
    file = file.open("file_name",'w') {|f| f.write(Base64.decode64(base64data)) }

    return file_path
end
end

我运行的脚本 - 当我调用 ruby​​ node_manager.rb 而不是当我用 rails c 运行它时工作

admin_tls_base64 = "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JsUNKekNDQWMyZ0F3SUJBZ0lSQulWYzdlNHkxVGlpcHpmNWtHd09BUkF3Q2dZSUtvWkl6ajBFQXdJd01URWYKTUIwR0ExVUVDaE1XYkc1a0lHRjFkRzluWlc1bGNtRjBaV1FnWTJWeWRERU9NQXdHQTFVRUF4TUZZV3hwWTJVDWpIaGNOTWpFd056QTRNVEF5TmpFMFdoY05Nakl3T1RBeU1UQXlOakUwV2pBeE1SOHdIUVlEVlFRS0V4WnNibVFnCllYVjBiMmRsym1WeVlYUmxaQ0JqWlhKME1RNHdEQVlEVlFRREV3VmhiR2xqWlRCWk1CTUdCeXFHU000OUFnRUcKQ0NxR1NNNDlBd0VIQTBJQUJMQ3B2eDdZb1ptZURIQVdjN0ozdmZTTUhPNEJhRnpMV0hJUXhJM2swaVJRS2xVVQpaSkdUcnFCQm1kU3AzcnNRMWsvSmtqOVlLZEVRMHVmcTdNeDBzcEdqZ2NVd2dJsXdEZ1lEVliwUEFRSC9CQVFECkFnS2tNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUZCd01CTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME8KQkJZRUZJWlUrUHlTYVB0eFdOV0RqckJ5SUZuVXdTL0JNR3NHQTFVZEVRUmtNR0tDQldGc2FXTmxnZ2xzYjJOaAPIR2h2YzNTQ0JXRnNhV05sZ2c1d2IyeGhjaTF1TWkxaGJHbGpaWulFZFc1cGVJsUtkVzVwZUhCaFkydGxkSUliClluVm1ZMjl1ym9jRWZ3QUFBWWNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBWWNFckJJQUFqQUtCZ2dxaGtqT1BRUUQKQWdOSUFEQkZBaUVBbDhnOERONStpRTA5c1ZZS2RoblExUmZWeWhhaTdLMG9xK2puV3NyNHpVNENJR2t6Nko4eQprTk4rSTRHT040UGNIWGN1QjRjWEt1aDJxVWFvd2IvZVBxV3YKLS0tLS1FTkQgQ0VsvelGSUNBVEUtLS0tLQo="
admin_mac_base64= "AgEDbG5kAvgBAwoQ4MUVu75H5pCIGbg7qzbRfBIBMBoWCgdhZGRyZXNzEgRyZWFkEgV3cml0ZRoTCgRpbmZvEgRyZWFkEgV3cml0ZRoXCghpbnZvaWNlcxIEcmVhZBIFd3JpdGUaIQoIbWFjYXJvb24SCGdlbmVyYXRlEgRyZWFkEgV3cml0ZRoWCgdtZXNzYWdlEgRyZWFkEgV3cml0ZRoXCghvZmZjaGFpbhIEcmVhZBIFd3JpdGUaFgoHb25jaGFpbhIEcmVhZBIFd3JpdGUaFAoFcGVlcnMSBHJlYWQSBXdyaXRlGhgKBnNpZ25lchIIZ2VuZXJhdGUSBHJlYWQAAAYgzSSZTiO2yEt9aP+zP95czvfNNPgQXhyLNto2X1onfqQ="

admin_tls = NodeManager.converT_Base64_to_file(file_name: "test_tls.cert",base64data: admin_tls_base64)
admin_mac = NodeManager.converT_Base64_to_file(file_name: "test.macaroon",base64data: admin_mac_base64)

admin_node = NodeManager.new(admin_tls,admin_mac,'127.0.0.1:10001')
puts admin_node.get_info

感谢您的帮助,

解决方法

一个简单的解决方案是给 File.write 函数“wb”权限

def self.converT_Base64_to_file(directory: nil,file_name:,base64data:)
if Directory
    file_path = [directory,file_name].join('/')
else 
    file_path = file_name
end
file = File.open("file_name",'w') {|f| f.write(Base64.decode64(base64data)) }

return file_path
end

我希望这会帮助某人!

大佬总结

以上是大佬教程为你收集整理的Ruby on Rails Encoding::UndefinedConversionError(“\xF8”从 ASCII-8BIT 到 UTF-8)全部内容,希望文章能够帮你解决Ruby on Rails Encoding::UndefinedConversionError(“\xF8”从 ASCII-8BIT 到 UTF-8)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。