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

用PostgreSQL和Ruby对象映射器使用UTF-8字符的正确方法是什么?

弓泰
2023-03-14

我试过很多黑暗中的随机镜头,比如:

  config.gateways[:default] = [:sql, database_url, encoding: 'UTF8']

和UTF8的所有变体,例如UTF8、utf-8、unicode、unicode。

  • 我已尝试将shell环境的LC_CTYPE设置为utf8。
  • 我已尝试在连接URL上设置client_encodinghtml" target="_blank">参数。
  • 我已经验证了数据库的编码为UTF8,即show server_encode
  • 我已经验证了ROM的续集连接在实际使用之前报告了UTF8的客户端编码,即show client_encoding
  • 我已经验证了可以使用psql在同一个数据库中插入和回读UTF-8字符。
  • 我已经验证了可以使用Rails的ActiveRecord在同一个数据库中插入和回读UTF-8字符。

但是当我给ROM非ASCII、UTF-8字符插入时,这些字符会在PostgreSQL的过程中被替换为“”。

共有1个答案

都浩淼
2023-03-14

嗯,我们直接将连接选项传递给Sequel,然后如果您在连接期间指定了配置选项,如编码:utf-8,它将起作用

ROM::configuration.new(:sql,“postgres://...”,{encode:utf-8})

require 'rom'
require 'rom-sql'

DATABASE_URL = ENV.fetch('DATABASE_URL', 'postgres://localhost/rom')
setup = ROM::Configuration.new(:sql, DATABASE_URL, encoding: 'unicode')
rom = ROM.container(setup)

conn = setup.default.connection
conn.drop_table?(:users)
conn.create_table :users do
  String :name
end

class Users < ROM::Relation[:sql]
end

setup.register_relation(:users)

rom.relations.users.insert(:name => "Pöter")

p rom.relations.users.to_a
 类似资料:
  • 和标题一样,杰克逊无法阅读utf-8。 第37行: 21:48:55[严重]com。fasterxml。杰克逊。果心JsonParseException:无效的UTF-8起始字节0xb3位于[Source:(文件);第18行,第38列] 这里是第18行,看不懂UTF-8" "理由":"管理员nie poda的Powodu banicji" 整个StackTrace

  • 问题内容: 我正在Heroku上编写一个node.js应用程序,并使用pg模块。我无法弄清楚为查询数据库所需的每个请求获取客户端对象的“正确”方法。 该文档使用如下代码: 但是,您肯定不需要在使用数据库的每个函数中调用对吗?我看过其他执行此操作的代码: 我倾向于第二种选择,因为我相信Heroku的免费数据库实例无论如何都仅限于一个连接,但是以这种方式进行操作是否有任何弊端?每次使用之前,是否需要检

  • 我正在处理一个位置数据集,其中一些位置名称使用本地字符。大多数字符都被正确地看到,但我对一些罗马尼亚字符有意见,比如“ș”。 我尝试改变我的Windows 10 64位系统区域设置使用UTF-8编码,但这并没有解决问题。 可以在此处找到用于测试的示例文件:https://drive.google.com/file/d/1T7QQQ7G_dA_rXD9Ewf51uuQ6CUkscjP_/view?u

  • 我真的被Eclipselink MOXy 2.5.1卡住了,没有给我提供正确编码的亚洲字符(或其他字符,例如:德语umLautsäöü)。 我的代码: 测试类如下所示: 属性"key"仅为测试目的初始化一个字符串,我从一个UTF-8编码的文件中读取,该文件没有包含BOM 当我通过客户端调用这两种资源时: 我得到以下结果: 奇怪的是,当我在/test2中编组测试对象的toString()方法时,它将

  • 我试图比较两个对象,看看它们是否相同,使用hamcrest for flex-Unit,但是当对象有子对象时,它只是抛出一个错误: 我希望它做一个资产(…,hasProperties(…);在子对象上。 有没有办法得到,或者我应该创建一个自定义匹配器? 编辑 我要测试的对象结构的一个示例: 由于expected和objectUnderTest具有相同的结构,测试应该通过,但返回错误: 另外,如果有

  • 问题内容: 即使在使用Java Swing一年以上之后,对我来说,它仍然像魔术一样。如何正确使用BufferStrategy,尤其是方法? 我想添加一个JFrame和一个Canvas,然后进行绘制。我还希望能够调整()画布的大小。每次我调整Canvas的大小时,似乎都会被浪费掉,或者变得毫无用处,因为在上使用并没有真正做任何事情。另外,它具有怪异的不确定性行为,我不知道如何正确同步它。 这就是我的