2016-11-10 26 views
1
  1. IBM的Informix Dynamic Server版本11.70在RHEL 2.6的Informix Dynamic Server版本11.70符号商标转换成问号

  2. 一些信息

    select distinct dbs_collate 
    from sysmaster:sysdbslocale; 
    
    dbs_collate 
    ----------- 
    
    en_US.819 
    
  3. 我的JDBC

    jdbc.ep.ifx.url=jdbc:informix-sqli://server:9999/testdb:informixserver=test_shm;IFX_USE_STRENC=true; 
    
  4. create table test 
    (
    id serial, 
    notes nchar(5120) 
    ); 
    
  5. 我究竟想达到

    • 使用网络的基础应用将文本添加到Informix表通JDBC
    • 文本可以是任何东西,包括符号(例如版权,商标)
  6. 什么当前工作

    • 我可以在表中添加任何文字,符号,
    • 但某些符号,例如商标将被保存为“?”。
  7. 我的问题

    • 如何使符号保存并正常显示,而不是被转换为“?”

回答

1

某些字符不en_US.819表示。你可以看到它的外观:https://en.wikipedia.org/wiki/ISO/IEC_8859-1copyrightreserved个字符,而我看不到trade mark

我做了一个简单的Jython程序,将这些字符插入到Informix数据库中。我的测试数据库使用波兰编码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.此消息如果INSERT与商标字符。商标不适用于我使用的波兰CP1250,也不适用于您使用的CP819。也许你使用其他技术如ODBC插入它?

您还可以看到,选择显示版权/注册字符前的奇怪字符。

我认为唯一的解决方案是使用UTF-8等Unicode编码创建新的数据库。