grails 3 oracle数据源为俄语文本
我正在处理连接到oracle数据库的grails应用程序.它工作正常,除非数据库中有任何俄语文本.对于俄语文本,我被倒置了?在
mysql的其他问题中有一些方法,但我找不到oracle的数据源配置.这里的任何帮助都会很棒.
编辑 – SELECT * FROM NLS_DATABASE_PARAMETERS参数类似于’%SET’; 解决方法以下查询的结果是什么意思?SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE '%SET'; PARAMETER VALUE ------------------------------ ------------------------------ NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_CHARACTERSET WE8MSWIN1252 这意味着: > AL16UTF16编码(Unicode的16位编码)用于编码NVARCHAR2变量,表格列和文字中的数据 不幸的是,WE8MSWIN1252是CP-1252代码页,它不支持俄语西里尔字符(如консэквюат等). 安装过程中有人没有考虑俄语字符,可能选择了错误的代码页.该文档列出了支持俄语的代码页(参见表A-13 LCSSCAN和GDK支持的语言和字符集):
您可以在以下示例中观察使用此代码页的效果: 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值的使用都会导致转换为WE8MSWIN1252代码页,并且所有俄语字符都将丢失. 在目前的情况下你可以做些什么: >在所有表和存储过程中使用NVARCHAR2而不是VARCHAR2数据类型 – 您需要重写所有数据库过程,函数,触发器等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |