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

Rails3无法将'ñ'保存到Oracle 11g

伯君浩
2023-03-14

我使用的是Rails3.2.13、Ruby1.9.3和Oracle11g。在数据库中保存带有像'ñ'这样的字符的记录时,会出现以下错误:

ActiveRecord::StatementInvalid (Encoding::UndefinedConversionError:
U+00F1 from UTF-8 to US-ASCII: INSERT INTO "OMNIAUTH_USERS" ("CREATED_AT",
"FIRST_NAME", "ID", "LAST_NAME", "STATUS", "UID", "UPDATED_AT") VALUES (:a1,
:a2, :a3, :a4, :a5, :a6, :a7)):
app/controllers/user_sessions_controller.rb:18:in `create'
SELECT USERENV ('language') FROM DUAL

这些是我送给甲骨文的宝石:

gem 'ruby-oci8', '~> 2.1.5'
gem 'activerecord-oracle_enhanced-adapter', '~> 1.4.2'
gem 'ruby-plsql', '~> 0.5.0'

我该怎么办?

共有1个答案

欧阳俊晖
2023-03-14

您必须区分两种不同的nls设置

>

  • 外部变量-由应用程序中的环境变量NLS_LANG定义。这决定了向OCI客户端库发送数据时的内部字符串表示形式。

    内部的那个。它是Oracle用于在磁盘上存储数据的字符集。

    尝试执行

    select r.module, t.*
    from v$sesssion_connection_info t
    join v$session r on (r.sid = t.sid and t.serial# = r.serial#)
    where r.sid = <your ruby connection SID>;
    
    select * from nls_database_parameters;
    select * from nls_instance_parameters;
    

    如果显示您使用的是US7ASCII或ISO8859P1,则Oracle接受您的字符并将其转换为目标字符集(通过删除重音或替换为“?”)。

  •  类似资料:
    • 这是使用电子邮件密码注册帐户的所有代码,保存验证电子邮件,将用户数据保存到Firestore数据库中。只有Firestore数据库无法运行。 else { Toast.makeText(register.this, “Error ! ” task.getException().getMessage(), Toast.LENGTH_SHORT).show();progressBar.setVisib

    • 我尝试用以下代码保存从internet下载的文件 但在运行时,我得到的错误如下 03-04 20:42:51.080 8972-8972/com.example.me.demo2 E/BitmapFactory:无法解码流:java.io.FileNotFoundExcoop: /storage/emulated/0/.tanks/4a100abb-0e55-4062-8c37-f11f4189e

    • 问题内容: 我尝试使用此代码下载图像并将其保存在以下行中: 我在emulator.my应用程序上尝试了此操作,但出现异常,没有权限保存到此路径: 我也添加了这一行: 这是代码: 问题答案:

    • 我尝试使用spark将一些数据保存到casandra,但当我尝试保存日期时,我得到了 出现以下错误: 我的餐桌课 我的cassandra表: 有人知道怎么解决这个问题吗? 编辑:

    • 问题内容: 检索数据有效,但是我无法将检索到的数据保存到ArrayList中。在“ onDataChanged()”方法之后,ArrayList“配置文件”似乎具有2个值,但在return语句中它具有0个值。 问题答案: 您现在无法返回尚未加载的内容。换句话说,您不能简单地在方法之外返回列表,因为它总是由于该方法的异步行为而引起的。这意味着,当您尝试返回该方法之外的结果时,数据尚未完成从数据库的加

    • 我正对着< code > org . Apache . poi . open XML 4j . exceptions . open XML 4 jruntimeexception:保存失败:保存包时出错:无法用marshaller在流中保存零件/docProps/app.xml 在每个测试场景执行完成后,尝试将每个测试场景结果(通过或失败)写入Excel表(.xlsx)时出现异常。为此,我编写了以