我有一个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 |
这个问题与后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。然后,在每一步骤中,其余部分将分开存储以形成相反的二进制等效数。 在此算法中,我们将遵循递归方法。这将帮助我们在不使用堆栈数据结构的情况下解决问题。在实现中,我们知道函数的递归将遵循内部堆栈。我们将使
我想做一个java程序,用户输入一个十进制数,然后它转换成二进制。这是我到目前为止所拥有的,但是当我输入8时,虽然循环只循环一次,只给我0。我知道二进制中的8是1000,所以我不明白我做错了什么。我需要代码变得简单。请帮忙谢谢