如何将瑞典语字符插入 NVARCHAR2 Oracle 表列类型?
Posted
技术标签:
【中文标题】如何将瑞典语字符插入 NVARCHAR2 Oracle 表列类型?【英文标题】:How do I insert a Swedish characters into a NVARCHAR2 Oracle table column type? 【发布时间】:2017-02-10 19:37:30 【问题描述】:我是这样插入的:
insert into s_test values('Länsförsäkringar');
取回这个:
select * from s_test;
L�nsf�rs�kringar
这里 � 是一个替换字符 \003F
期望:
select * from s_test;
Länsförsäkringar
相关的 NLS 参数:
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CHARACTERSET US7ASCII
NLS_LENGTH_SEMANTICS BYTE
NLS_RDBMS_VERSION 11.2.0.3.0
表:
CREATE TABLE "S_TEST"
( "COL1" NVARCHAR2(100) ) ;
如何将瑞典语字符插入 Oracle NVARCHAR2 列类型?
【问题讨论】:
【参考方案1】:使用N
:
insert into s_test values(N'Länsförsäkringar');
https://docs.oracle.com/database/121/SQLRF/sql_elements003.htm#SQLRF00218
文本字面量或字符串的语法如下:
其中 N 或 n 指定使用国家字符集的文字 (NCHAR 或 NVARCHAR2 数据)。默认情况下,使用此输入的文本 符号被翻译成国家字符集的方式 服务器使用时的数据库字符集。为了避免潜在的 文本文字转换到数据库期间的数据丢失 字符集,设置环境变量 ORA_NCHAR_LITERAL_REPLACE 为真。这样做会在内部透明地替换 n' 并且 为 SQL 处理保留文本文字。
【讨论】:
谢谢你,它在 SQL*Plus 中有效,但在 Java 1.4/JDBC 准备语句中它失败了.. 在java中使用PreparedStatement,它的setString方法自动将unicode java字符串转换为NVarchar 在带有 Weblogic JDBC 的 JDK 1.4 中,我得到替换字符 \003F。 在 1.6 中我可以做到:pstmt.setFormOfUse(1, oracle.jdbc.OraclePreparedStatement.FORM_NCHAR);但不是在 1.4以上是关于如何将瑞典语字符插入 NVARCHAR2 Oracle 表列类型?的主要内容,如果未能解决你的问题,请参考以下文章
CHAR varchar varchar2 nvarchar2