powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
19 сообщений из 19, страница 1 из 1
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34019200
PM123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oracle DB в utf8 кодировке-> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
...
Рейтинг: 0 / 0
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34019275
PM123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oracle DB в utf8 кодировке
данные получаю с пом. jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
причем вывод и в JSP и на консоль
необходимо какое то решение
...
Рейтинг: 0 / 0
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34019421
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34019534
PM123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Какую используешь версию 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
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34019545
PM123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточняю 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
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34019613
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34019848
PM123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Установил 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
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34020050
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, если сделать такой тест.

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

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

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

Еще раз благодарю Дениса Попова. Большое спасибо!!!
...
Рейтинг: 0 / 0
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34020486
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причём здесь Toad, может с руками что???
...
Рейтинг: 0 / 0
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34020524
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34020534
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UTF16 кодировка БД и клиенты Дельфей(CL8MSWIN1251) и THIN-клиенты Java ходят без проблем, сейчас настроек не помню, если интересно сообщу завтра.
...
Рейтинг: 0 / 0
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34020541
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zalexaka wrote:

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

Угу, интересно. Впрочем, может я и наврал, и проблемы возникали только на клиенте, когда выставляли
в NNLS_LANG то CL8MSWIN1251, то UTF8, с чтением данных, забитых в другой кодировке. Но это уже
вопрос в форум по Delphi:)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34020637
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Oracle DB (utf8) -> jdbc classes12.jar -> вывод КРАКОЗЯБЛЫ
    #34020741
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous wrote:

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

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

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

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

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

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


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