2016-11-10 2 views
1
  1. IBM Informix Dynamic Server версии 11.70 на RHEL 2.6Informix Dynamic Server Version 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-1 Существует copyright и reserved символов, пока я не вижу 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?

Вы также можете видеть, что на экране отображаются странные символы перед символом авторского права/зарегистрированным символом.

Я думаю, что единственным решением является создание новой базы данных с кодировкой Unicode, такой как UTF-8.

Смежные вопросы