Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ / 19 сообщений из 19, страница 1 из 1
28.09.2006, 15:00:44
    #34019200
PM123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
Oracle DB в utf8 кодировке-> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
...
Рейтинг: 0 / 0
28.09.2006, 15:14:57
    #34019275
PM123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
Oracle DB в utf8 кодировке
данные получаю с пом. jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
причем вывод и в JSP и на консоль
необходимо какое то решение
...
Рейтинг: 0 / 0
28.09.2006, 15:38:09
    #34019421
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
PM123 wrote:

> Oracle DB в utf8 кодировке
> данные получаю с пом. jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
> причем вывод и в JSP и на консоль
> необходимо какое то решение

Какую используешь версию Java? Если больше чем 1.2, то возьми ojdbc14.jar вместо
classes12.jar. Покажи пример твоей JSP, как ты получаешь данные? Прописаны ли
кодировки страницы на самой JSP?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
28.09.2006, 15:59:45
    #34019534
PM123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
>Какую используешь версию Java? Если больше чем 1.2, то возьми ojdbc14.jar >вместо
>classes12.jar. Покажи пример твоей JSP, как ты получаешь данные? >Прописаны ли
>кодировки страницы на самой JSP?

версия 1.5
дело в том, что используем тонкий клиент, поэтому classes12
данные получаю сначала в Bean

на JSP кодировка прописана (Struts)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
<%@ page language="java" pageEncoding="UTF-8"%>
...
...
		<logic:present name="AllLanguageCategories" scope="request">
			<logic:notEmpty name="AllLanguageCategories" scope="request">
				<table width="100%" border="0">
					<tr>
					
					
						<%@ page  import ="com.cecito.beans.*"%>
						<%  LanguageCategoryBean[] langCatBean = (LanguageCategoryBean[])request.getAttribute("AllLanguageCategories"); %>

						<%	 int  tdCounter =  0 ;
							
							 for  ( int  i =  0 ; i < langCatBean.length; i++) {	%>
						<%  		 int  val = i - (i/ 3 )* 3 ;
						        
									 if  (val ==  0 ) { %>
										<tr>
						<% 			} %>
									<td width="33%" height="60">
									<html:link page="/welcome.jsp#">
									<%=langCatBean[i].getCategoryName() %>
									</html:link> (xx)<br>	
									<%=langCatBean[i].getCategoryDescription() %><br>	
									</td>
								<%	
									tdCounter = tdCounter +  1 ;
							}
							 if  (tdCounter< 3 ) {
								 for  ( int  i =  0 ; i <  3  - tdCounter; i++) { 
									%>
									<td> </td>
									<% 
								}
							}
						%>
						
						
						
    				</tr>
				</table>
				
</logic:notEmpty>
		</logic:present>

Пример получения данных в Bean:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
 public   static  LanguageCategoryBean[] getAllLanguageCategories(String langId)
         throws  SQLException {
    Connection connection =  null ;
    PreparedStatement statement =  null ;
    ResultSet resultSet =  null ;
    ArrayList languageCategoryBeans =  new  ArrayList();
     try  {

        connection = DbUtils.getConnection(Constants.DS_XXXX);

        statement = connection.prepareStatement(selAll,
                ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_READ_ONLY);
        statement.setString( 1 , langId);

        resultSet = statement.executeQuery();

         while  (resultSet.next()) {
            LanguageCategoryBean languageCategoryBean =  new  LanguageCategoryBean(
                    resultSet);
            languageCategoryBeans.add(languageCategoryBean);
        }
    }  finally  {
         if  (resultSet !=  null )
            resultSet.close();
         if  (statement !=  null )
            statement.close();
         if  (connection !=  null )
            connection.close();
    }
    LanguageCategoryBean[] arrayLanguageCategoryBeans =  new  LanguageCategoryBean[languageCategoryBeans
            .size()];
     return  (LanguageCategoryBean[]) languageCategoryBeans
            .toArray(arrayLanguageCategoryBeans);
}
В DBUtils
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
   public   static  Connection getConnection(String jdbcResourceName) {
      Connection conn =  null ;  
       try  {
          Context initCtx =  new  InitialContext();
          Context envCtx = (Context) initCtx.lookup("java:comp/env");
          oracle.jdbc.pool.OracleDataSource dss = (oracle.jdbc.pool.OracleDataSource) envCtx.lookup(jdbcResourceName);
          conn = dss.getConnection();
          

      }  catch  (Exception e) {
          e.printStackTrace();
      }
       return  conn;
  } 
Context:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<Context crossContext="true" debug="5" displayName="Xxxxx" 
         docBase="D:/JavaProjects/Project/WebRoot" path="/xxxx" reloadable="true">
  <Logger className="org.apache.catalina.logger.FileLogger" 
          prefix="localhost_xxxx." suffix=".txt" timestamp="true"/>

  <Resource name="jdbc/xxxx" auth="Container"
              type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@10.10.10.205:1521:XXXX"
              username="...." password="...." maxActive="20" maxIdle="10"
              maxWait="-1"/> 

</Context>
web.xml приложения
Код: plaintext
1.
2.
3.
4.
5.
  <resource-ref>
      <res-ref-name>jdbc/xxxx</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>
...
Рейтинг: 0 / 0
28.09.2006, 16:02:58
    #34019545
PM123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
Уточняю DBUtils
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
   public   static  Connection getConnection(String jdbcResourceName) {
      Connection conn =  null ;  
       try  {
          Context initCtx =  new  InitialContext();
          Context envCtx = (Context) initCtx.lookup("java:comp/env");
          DataSource dss = (DataSource) envCtx.lookup(jdbcResourceName);
          conn = dss.getConnection();
          

      }  catch  (Exception e) {
          e.printStackTrace();
      }
       return  conn;
  }
...
Рейтинг: 0 / 0
28.09.2006, 16:18:23
    #34019613
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
PM123версия 1.5
дело в том, что используем тонкий клиент, поэтому classes12

Они все - и тонкий, и толстый (т.е. THIN и OCI) клиенты одновременно. Но ojdbc14.jar - драйвер поновее и и рекомендованный к использованию с JDK 1.5
PM123
Код: plaintext
<%@ page language="java" pageEncoding="UTF-8"%>

Попробуй добавить contentType, в двух местах, т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
...
<head>
  ...
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  ...
</head>
<body>

Кстати, в Struts есть <logic:iterate>:) Вроде их используете, а все равно, мешанина на странице.
...
Рейтинг: 0 / 0
28.09.2006, 17:10:19
    #34019848
PM123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
Установил ojdbc14, добавил
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
...
<head>
...
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
...
</head>
<body>

Но результат - все тот же КРАКОЗЯБЛЫ
...
Рейтинг: 0 / 0
28.09.2006, 17:55:29
    #34020050
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
Хорошо, если сделать такой тест.

1. Создать таблицу и записать туда русские буквы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create table test (
    test_id number( 9 )
  , value varchar2( 64 )
);
insert into test (test_id, value) values ( 1 , 'йцуке');
insert into test (test_id, value) values ( 2 , 'ЙЦУКЕ');
commit;

2. На JSP вывести содержимое таблицы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
<%@page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE HTML  PUBLIC  "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page  import ="java.sql.Connection"%>
<%@ page  import ="java.sql.DriverManager" %>
<%@ page  import ="java.sql.ResultSet" %>
<%@ page  import ="java.sql.Statement" %>
<html>
<head>
  <title>select * from test</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<table border="1" cellpadding="4">
<tr>
  <th>TEST_ID</th>
  <th>VALUE</th>
</tr>
<%
  DriverManager.registerDriver( new  oracle.jdbc.OracleDriver());
  Connection con = DriverManager.getConnection(
    "jdbc:oracle:thin:@10.10.10.205:1521:XXXX", "<username>", "<password>"
  );
  Statement st = con.createStatement();
  ResultSet rs = st.executeQuery("select * from TEST");
   while  (rs.next()) {
%>
<tr>
  <td><%=rs.getInt("test_id")%></td>
  <td><%=rs.getString("value")%></td>
</tr>
<%
  }
  rs.close();
  st.close();
  con.close();
%>
</table>
</body>
</html>

Будут видны русские буквы?
...
Рейтинг: 0 / 0
28.09.2006, 20:09:42
    #34020378
PM123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
Все сделал!!! Слава богу!
Спасибо тебе Денис, что откликнулся.
...
Рейтинг: 0 / 0
28.09.2006, 20:15:14
    #34020387
PM123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
Настройки все были в норме. Нормально работают и classes12 и ojdbc14
Все было Ок.

Просто некоторые гении не знают, что TOAD не работает с UTF-8

А дело было как в анекдоте. Создали базу UTF-8, кусок работающего приложения JSP, srvlets, filters, т.е. все уже работало под FireBird, а тут ппеределали под Oracle. Но данные изначально забили в базу с помощью этого TOAD. И все!!! Данные в базе лежат только для этого TOAD, а для остальных это просто мусор.

Еще раз благодарю Дениса Попова. Большое спасибо!!!
...
Рейтинг: 0 / 0
28.09.2006, 22:11:09
    #34020486
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
Причём здесь Toad, может с руками что???
...
Рейтинг: 0 / 0
28.09.2006, 22:57:05
    #34020524
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
zalexaka wrote:

> Причём здесь Toad, может с руками что???

У нас было примерно такое же, только связанное с Delphi. Приложение коннектилось через OCI и, хоть в
базе кодировка была UTF8 для VARCHAR2, на клиенте в NLS_LANG было прописано CL8MSWIN1251. А
THIN-драйвер ходит в базу напрямую, без ораклового клиента, и использует кодировку базы, т.е. UTF8.
И были проблемы с чтением данных, забитых клиентским приложением, через Java, либо через того де
клиента Delphi, если выславить UTF8 в NLS_LANG.

2PM123: почитай на всякий случай Java Русские
буквы и не только...
, особенно про Русские буквы в Servlet-ах.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
28.09.2006, 23:04:46
    #34020534
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
UTF16 кодировка БД и клиенты Дельфей(CL8MSWIN1251) и THIN-клиенты Java ходят без проблем, сейчас настроек не помню, если интересно сообщу завтра.
...
Рейтинг: 0 / 0
28.09.2006, 23:14:20
    #34020541
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
zalexaka wrote:

> UTF16 кодировка БД и клиенты Дельфей(CL8MSWIN1251) и THIN-клиенты Java
> ходят без проблем, сейчас настроек не помню, если интересно сообщу завтра.

Угу, интересно. Впрочем, может я и наврал, и проблемы возникали только на клиенте, когда выставляли
в NNLS_LANG то CL8MSWIN1251, то UTF8, с чтением данных, забитых в другой кодировке. Но это уже
вопрос в форум по Delphi:)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
29.09.2006, 03:27:14
    #34020637
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
Denis Popov
Угу, интересно. Впрочем, может я и наврал, и проблемы возникали только на клиенте, когда выставляли в NLS_LANG то CL8MSWIN1251, то UTF8, с чтением данных, забитых в другой кодировке. Но это уже вопрос в форум по Delphi:)
Денис, вот от кого, а от Вас не ожидал :)
Нельзя "забить" в oracle данные в "другой" кодировке кроме вырожденного случая, когда database characterset = nls_lang (при этом не производится преобразования и валидации символов, oracle "доверяет" приложению), что некоторые безграмотные умники периодически используют чтобы хранить "русские буквы" в чуждых кодировках типа iso8859-1 или даже в us7ascii.
Соответственно, применительно к обсуждаемому случаю, для "забивания" данных посредством TOAD NLS_LANG должен был быть установлен в .CL8MSWIN1251
Тогда при передаче на сервер данные были бы корректно преобразованы в серверный utf-8 и потом столь же корректно могли быть получены в любой совместимой кодировке (любой юникод, koi-8, iso8859-5, pc866, mswin1251 и т.д. - в зависимости от языковых настроек клиента).
Вот и весь секрет :)
...
Рейтинг: 0 / 0
29.09.2006, 07:58:45
    #34020741
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
andrey_anonymous wrote:

> Денис, вот от кого, а от Вас не ожидал :)

Подумаешь, у меня еще другие тараканы в голове есть:) Спасибо за разъяснения.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
29.09.2006, 10:56:01
    #34021245
PM123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
Вопрос:
Что надо сделать чтобы TOAD 7.1.7.21 стал понимать UTF-8 кодировку базы Oracle 10?
Потому что мы стали пока пользоваться пока MyEclipse database explorer.
Пока не очень удобно.
Заранее всем участникам благодарен.
...
Рейтинг: 0 / 0
29.09.2006, 12:04:08
    #34021586
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
У тебя какая-то странная проблема. У меня кодировка базы UTF-8, на клиенте в NLS_LANG стоит .CL8MSWIN1251, захожу любым клиентом, хоть sqlplus'ом, и нормально вижу/изменяю строки с русскими буквами. Одновременно вижу их через веб, присоединяясь через THIN-драйвер.

Какую кодировку использует TOAD?
...
Рейтинг: 0 / 0
29.09.2006, 16:51:25
    #34023016
PM123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
Денис! Огромное спасибо за то что подсказал. У меня установлена американская винда с амер кодировочкой. Ща поменял на

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251

и все заработало как часики

Спасибо!!!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]