【问题标题】:Ruby zlib deflate method is generating invalid charactersRuby zlib deflate 方法正在生成无效字符
【发布时间】:2021-10-24 18:15:08
【问题描述】:

希望你能帮我解决这个问题。

我试图在 Sinatra 应用程序中使用 zlib gem 实现一个简单的代码来对字符串进行放气,但它似乎放气错了?!

到目前为止,这是我的代码:

require 'sinatra'
require 'zlib'

get '/v1/generate' do
    file_content = "teste"
    generate_diagram_from file_content
end

def generate_diagram_from file_content
    data_compressed = Zlib::Deflate.deflate(file_content)
end

这就是我从 deflate 方法中得到的结果:

x�+I-.I�&

一个带有奇怪字符的奇怪字符串。

我想知道我在这里做错了什么。

提前谢谢你们!

【问题讨论】:

  • 压缩通常会压缩不能被强制转换为 ASCII 字符的字节。要将内容共享为可读字符串,请尝试使用 Base64.strict_encode64(data_compressed) 压缩 deflate,您应该会得到一个可读字符串来复制/粘贴。

标签: ruby compression zlib deflate


【解决方案1】:

唯一的错误是您对可读字符串的期望。

压缩产生所有值的字节序列 (0..255)。这称为二进制数据。如果您尝试按原样显示它,它将始终包含“奇怪”或“奇怪”的字符。事实上,它几乎肯定会包含无效的 UTF-8 序列,这就是为什么你会得到黑白问号的原因。这就是为什么您永远不会尝试显示或打印此类序列的原因。

如果您想查看它们,或者例如将它们放在此处的问题中,请以十六进制显示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 2017-11-08
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    相关资源
    最近更新 更多