Informix Dynamic Server版本11.70符号商标转换为问号

时间:2016-11-10 11:28:13

标签: jdbc unicode informix

  1. 关于rhel 2.6的IBM 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. 我想要实现的目标

    • 使用基于Web的应用程序通过JDBC
    • 将文本添加到Informix表中
    • 文字可以是包括符号在内的任何内容(例如版权,商标)
  6. 目前的工作原理

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

    • 如何正确保存和显示符号,而不是转换为“?”

1 个答案:

答案 0 :(得分:1)

en_US.819中未显示某些字符。您可以看到它的显示方式:https://en.wikipedia.org/wiki/ISO/IEC_8859-1我看不到copyrightreserved字符{。}}。

我制作了简单的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。