作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个连接到 oracle 数据库的 grails 应用程序。它工作正常,除非数据库中有任何俄语文本。对于俄语文本,我被倒置了?。 mysql的其他问题有一些方法,但我找不到oracle的数据源配置。这里的任何帮助都会很棒。
编辑 -
俄文文本存储在 varchar2 数据类型中。
这是查询 -
SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE '%SET';
NLS_CHARACTERSET WE8MSWIN1252
NLS_NCHAR_CHARACTERSET AL16UTF16
最佳答案
以下查询的结果是什么意思?
SELECT * FROM NLS_DATABASE_PARAMETERS
WHERE PARAMETER LIKE '%SET';
PARAMETER VALUE
------------------------------ ------------------------------
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET WE8MSWIN1252
NVARCHAR2
中的数据进行编码。变量、表列和文字 VARCHAR2
中的数据进行编码。变量、表列和文字 Russian
AL16UTF16, AL32UTF8, CL8ISO8859P5, CL8KOI8R, CL8MSWIN1251, RU8PC866, UTF8
SELECT * FROM NLS_DATABASE_PARAMETERS
WHERE PARAMETER LIKE '%SET';
PARAMETER VALUE
------------------------------ ------------------------------
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_CHARACTERSET WE8MSWIN1252
select 'консэквюат' x, n'консэквюат' y from dual;
X Y
---------- ----------
¿¿¿¿¿¿¿¿¿¿ консэквюат
create table test(
v1 varchar2(100),
v2 nvarchar2(100)
);
insert into test( v1, v2 ) values ('консэквюат', 'консэквюат' );
insert into test( v1, v2 ) values (n'консэквюат', n'консэквюат' );
select * from test;
V1 V2
--------------- ---------------
¿¿¿¿¿¿¿¿¿¿ ¿¿¿¿¿¿¿¿¿¿
¿¿¿¿¿¿¿¿¿¿ консэквюат
create FUNCTION function1( par varchar2 ) return varchar2
IS
BEGIN
return par;
END;
/
create FUNCTION function2( par nvarchar2 ) return varchar2
IS
BEGIN
return par;
END;
/
create FUNCTION function3( par varchar2 ) return nvarchar2
IS
BEGIN
return par;
END;
/
create FUNCTION function4( par nvarchar2 ) return nvarchar2
IS
BEGIN
return par;
END;
/
select function1( n'консэквюат' ) x1,
function2( n'консэквюат' ) x2,
function3( n'консэквюат' ) x3,
function4( n'консэквюат' ) x4
from dual;
X1 X2 X3 X4
--------------- --------------- --------------- ---------------
¿¿¿¿¿¿¿¿¿¿ ¿¿¿¿¿¿¿¿¿¿ ¿¿¿¿¿¿¿¿¿¿ консэквюат
NVARCHAR2
值被正确存储和转换,任何使用
VARCHAR2
value 会导致转换为 WE8MSWIN1252 代码页,并且所有俄语字符都将丢失。
NVARCHAR2
而不是 VARCHAR2
所有表和存储过程中的数据类型 - 您需要重写所有数据库过程、函数、触发器等。关于oracle - 用于俄文文本的 grails 3 oracle 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38133455/
我需要在 MYSQL 数据库中输入 10 种语言的内容(有问题的是:中文、俄语、阿拉伯语),客户端应该能够通过 phpMyAdmin 和管理区域读取和编辑它们。 我使用过 utf8-bin、utf8_
我是一名优秀的程序员,十分优秀!