|
|
|
Cannot map Unicode to Oracle
|
|||
|---|---|---|---|
|
#18+
Есть код: oracle.sql.ArrayDescriptor arrayDesc = oracle.sql.ArrayDescriptor.createDescriptor("STRING_VARRAY", db_con); oracle.sql.ARRAY arrayc = new oracle.sql.ARRAY(arrayDesc, db_con, subc); oracle.sql.ARRAY arrays = new oracle.sql.ARRAY(arrayDesc, db_con, subs); oracle.sql.ARRAY arrayn = new oracle.sql.ARRAY(arrayDesc, db_con, subn); oracle.sql.ARRAY arraynt = new oracle.sql.ARRAY(arrayDesc, db_con, subnt); oracle.sql.ARRAY arrayt = new oracle.sql.ARRAY(arrayDesc, db_con, subt); oracle.sql.ARRAY arrayl = new oracle.sql.ARRAY(arrayDesc, db_con, subl); CallableStatement cst = db_con.prepareCall("{ call APP_CONF.DOITEMSJOB(?,?,?,?,?,?,?,?) }"); cst.setArray(1, arrayc); cst.setArray(2, arrays); cst.setArray(3, arrayn); cst.setArray(4, arraynt); cst.setArray(5, arrayt); cst.setArray(6, arrayl); cst.setString(7, (overwrite? "1":"0")); cst.registerOutParameter(8, java.sql.Types.ARRAY, "STRING_VARRAY"); cst.execute(); oracle.sql.ARRAY arrayResult = (oracle.sql.ARRAY)cst.getArray(8); String[] res = (String[])arrayResult.getArray(); cst.close(); Он выкидывает всегда ошибку. Если я выполняю процедуру cst.setString() с этими же значениями из массива, то все работает, значит по идее кодировка на базе стоит нормальная. Что не так? Oracle 9 JDBC 9.2.05 [04.11.17 01:48:12] Invocation exception: Cannot map Unicode to Oracle character.(java.sql.SQLException: Cannot map Unicode to Oracle character.) java.sql.SQLException: Cannot map Unicode to Oracle character. at oracle.sql.converter.CharacterConverter1Byte.toOracleCharacter(CharacterConverter1Byte.java:176) at oracle.sql.converter.CharacterConverter1Byte.toOracleString(CharacterConverter1Byte.java:372) at oracle.sql.CharacterSetWithConverter.convert(CharacterSetWithConverter.java:160) at oracle.sql.CHAR.<init>(CHAR.java:159) at oracle.sql.CHAR.<init>(CHAR.java:183) at oracle.jdbc.oracore.OracleTypeCHAR.toDatum(OracleTypeCHAR.java:161) at oracle.jdbc.oracore.OracleType.toDatumArray(OracleType.java:166) at oracle.jdbc.oracore.OracleTypeCHAR.toDatumArray(OracleTypeCHAR.java:208) at oracle.sql.ArrayDescriptor.toOracleArray(ArrayDescriptor.java:1517) at oracle.sql.ARRAY.<init>(ARRAY.java:132) at aktif$administration$konfiguration$import$html.run(aktif$administration$konfiguration$import$html.java:1473) at Jasper.doGet(Jasper.java:90) at Jasper.doPost(Jasper.java:109) at javax.servlet.http.HttpServlet.service(HttpServlet.java:521) at javax.servlet.http.HttpServlet.service(HttpServlet.java:588) at org.apache.jserv.JServConnection.processRequest(JServConnection.java:314) at org.apache.jserv.JServConnection.run(JServConnection.java:188) at java.lang.Thread.run(Thread.java:534) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:07 |
|
||
|
Cannot map Unicode to Oracle
|
|||
|---|---|---|---|
|
#18+
nls_charset12.zip в classpath и все пройдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:24 |
|
||
|
Cannot map Unicode to Oracle
|
|||
|---|---|---|---|
|
#18+
не помогло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 16:16 |
|
||
|
Cannot map Unicode to Oracle
|
|||
|---|---|---|---|
|
#18+
Странно... Мне помогало. На какую конкретно строчку ругается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 19:11 |
|
||
|
Cannot map Unicode to Oracle
|
|||
|---|---|---|---|
|
#18+
ошибка на строке: oracle.sql.ARRAY arrayt = new oracle.sql.ARRAY(arrayDesc, db_con, subt); subt - массив строк, которые содержат немецкие символы. в случае, если только англ. то весь код работает нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 20:06 |
|
||
|
Cannot map Unicode to Oracle
|
|||
|---|---|---|---|
|
#18+
В какой все-таки кодировке создана база? Код: plaintext 1. Еще может стоит попробовать: при создании объектного типа в Oracle указывать не VARCHAR2, а NVARCHAR2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 20:17 |
|
||
|
Cannot map Unicode to Oracle
|
|||
|---|---|---|---|
|
#18+
Спасибо. NVARCHAR2 помогло. Кодировка базы WE8ISO8859P1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 22:51 |
|
||
|
Cannot map Unicode to Oracle
|
|||
|---|---|---|---|
|
#18+
Проблема опять всплыла: при использовании NVARCHAR2 у немцев, когда достаю значения из массива, они перекодированы. У нас же все нормально. Я делал UTL_FILE.PUT_LINE(..) и они нормально видны в файле. А у них ерунда. Что это может быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 20:31 |
|
||
|
Cannot map Unicode to Oracle
|
|||
|---|---|---|---|
|
#18+
В общем так: Можно использовать VARCHAR2. Чтобы избавится от Cannot map Unicode to Oracle, массив строк который мы передаем в oracle.sql.ARRAY arrayt = new oracle.sql.ARRAY(arrayDesc, db_con, subt); надо перекодировать: if(a != null) a = new String(a.getBytes("Cp1250"), "Cp1250"); и все работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2004, 15:38 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=829&tid=2153373]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 325ms |

| 0 / 0 |
