关于rhel 2.6的IBM Informix Dynamic Server版本11.70
一些信息
select distinct dbs_collate
from sysmaster:sysdbslocale;
dbs_collate
-----------
en_US.819
我的jdbc
jdbc.ep.ifx.url=jdbc:informix-sqli://server:9999/testdb:informixserver=test_shm;IFX_USE_STRENC=true;
表格
create table test
(
id serial,
notes nchar(5120)
);
我想要实现的目标
目前的工作原理
我的问题
答案 0 :(得分:1)
en_US.819
中未显示某些字符。您可以看到它的显示方式:https://en.wikipedia.org/wiki/ISO/IEC_8859-1我看不到copyright
和reserved
字符{。}}。
我制作了简单的Jython程序,将这些字符插入到Informix数据库中。我的测试数据库使用波兰语编码trade mark
。
pl_PL.1250
我尝试将错误消息从波兰语翻译为英语:insert into test_nchar (id, notes) values (1, 'copyright: ©')
insert into test_nchar (id, notes) values (2, 'registered: ®')
insert into test_nchar (id, notes) values (3, 'trademark: ™')
Something is terrible wrong with [insert into test_nchar (id, notes) values (3, 'trademark: ™')]
Traceback (most recent call last):
File "jdbc_ifx_encoding.py", line 20, in run_sql
c.execute(sql)
SQLException: java.sql.SQLException: B\u0142\u0105d konwersji kod\xf3w wskutek zabronionej sekwencji lub b\u0142\u0119dnej warto\u015bci.
SELECT ...
1: [copyright: ©]
2: [registered: ®]
如果Error while code conversion because of disallowed sequence or wrong value.
具有商标特征,则会显示此消息。商标不适用于我使用的波兰CP1250,也不适用于您使用的CP819。也许您使用ODBC之类的其他技术插入它?
您还可以看到选择在版权/注册字符之前显示奇怪的字符。
我认为唯一的解决方案是使用Unicode编码创建新的数据库,如UTF-8。