当前位置: 首页 > 知识库问答 >
问题:

Ruby on Rails到Postgres二进制编码

堵鸿光
2023-03-14

我有一个Ruby on Rails Postgresql应用程序,可以将文件图像保存到数据库中,在某些帖子安装中,数据被错误地保存为看起来像其他字节的格式,因此某些帖子安装中的图像无法正确返回文件

工作保存的数据

\xFF\xD 8\xFF\xE 1\x 00\x\xFF\x EE\x 00\x 0 E Adobe\x 00 d\xC 0\x 00\x 00\x 00\x 00\x 01\xFF\x DB\x 00\x 00\x 06\x 04\x 04\x 04\x 05\x 04\x 06\x 05\x 05\x 06\t\x 06\x 05\x 06\x 06\x 06\b\v\f\n\v\n\f\x 10\f\f\f\f\f\f\f\x 10\f\x 0 E\x 0 F\x 10\x 0 F\x 0 E\f\x 13\x 13\x 13\x 13\x 1 C\x 1 F\x 1 F\x 1 F\x 1 F\x 1 F\x 1 F\x 1 F\x 1 F\x 01

非工作保存的数据

x89504e470d0a1a0a0000000d494844520000014a0000003d0806000000cb7920c80000001974455874536f6674776172650041646f626520496d616765526561647971c9653c000047eb4944415478daec5d07781455d79e99edbdef269bb62940208426bd4a5110503e51c40e28d8051145fcec62ff4041c08628624169a28234419ad2a477d2934db2bdf736ffb95bc226a46c4240f1cf7d9e81ecececade7bef73de79e7b062749126b4b6da92db5a5b6d470

有什么建议吗??

在RoR,我这样做是为了保存文件

data = (!file.nil?) ? file.read.force_encoding("UTF-8") : nil

Brand.create!({name: brand[:name], value: brand[:value], file: file,  file_properties: get_file_properties(file_url), default: brand[:default], data: data})

并获取文件图像

image_tag(o.get_base64_image, style: 'max-width:100%')

使用模型方法

def get_base64_image
    return self.data != nil ? 'data:image/png;base64,' +     Base64.encode64(self.data) : ""
  end

两台服务器的服务器编码都是UTF-8

potgresql.conf

bytea_output = 'escape'

工作服务器

List of databases
        Name        |   Owner    | Encoding |   Collate   |    Ctype    |     Access privileges     
--------------------+------------+----------+-------------+-------------+---------------------------
 postgres            | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 

服务器不工作

List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | es_MX.UTF-8 | es_MX.UTF-8 | 

共有1个答案

鄢朝斑
2023-03-14

这个问题与后gresql中BYTEA列的输出有关,我是这样解决的:

ALTER ROLE postgres SET bytea_output TO 'escape';
 类似资料:
  • 问题内容: 我知道用和 将小数转换为二进制(在这里我取32位结果的低16位)。 我想做的是另一种方法,并采用16位二进制补码二进制字符串并将其转换为十进制。 即 而不是 我该怎么做? 问题答案: 您需要将结果读取到中。 此打印。

  • 我可以运行这个程序,但由于某些原因,它会显示/放置随机字符,而不是二进制的初始值,而且我似乎无法将程序从十进制运行回二进制。我该如何改进这些代码。要明确说明它不会将二进制转换为十进制,我将如何将其转换回十进制转换为二进制,如果有一些代码可以帮助我,将不胜感激。

  • 这是一个考题,我想一定有更有效的方法。(我也知道有一种方法可以直接转换二进制数,而不需要经过二进制字符串,但我不知道如何转换)。 这就是问题所在: 给出了一个由Q字符组成的非空零索引字符串S。该字符串的周期是最小的正整数P,使得: P≤ Q/2和S[K]=S[kp]表示0≤ K 例如,8是“Codilityco”的时期。如果M是N的二进制表示的周期,则正整数M是正整数N的二进制周期。 例如,4是9

  • 问题内容: 我使用python 3,我尝试将二进制文件写入使用r + b的文件。 其中,binary是包含数字的列表。如何将其写入二进制文件? 最终文件必须看起来像b’x07 \ x08 \ x07 \ 谢谢 问题答案: 当您以二进制模式打开文件时,实际上就是在使用该类型。因此,当您写入文件时,您需要传递一个对象,而从文件中读取时,您将获得一个对象。相反,以文本模式打开文件时,您正在使用对象。 因

  • 本文向大家介绍十进制到二进制转换,包括了十进制到二进制转换的使用技巧和注意事项,需要的朋友参考一下 十进制数字也可以转换为二进制格式。要将十进制数转换为二进制数,我们需要将数字除以2,直到达到0或1。然后,在每一步骤中,其余部分将分开存储以形成相反的二进制等效数。 在此算法中,我们将遵循递归方法。这将帮助我们在不使用堆栈数据结构的情况下解决问题。在实现中,我们知道函数的递归将遵循内部堆栈。我们将使

  • 问题内容: 我以为简单的事情并没有那么多。 我需要将一个长整数转换为二进制。 例如: 输出是10000000100 但是当我使用Integer.toBinaryString(2199023255552); 这是行不通的。当然,对于该函数而言,这个数字太大了,我找不到能从长整数转换的数字。 有什么建议? 谢谢。 问题答案: 添加一个以指示其long <1>并使用Long类 <2>: <1> 除非另有