Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Настрройка Tomcat, Проблема с кодировкой 
:(
    Опции темы
NetLord
Дата 13.4.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 25.2.2005

Репутация: нет
Всего: нет



Здраствуйте!

У меня следующая проблема:
JSP страница отображает файловую структуру моего компьютера и позволяет перемещаться по ней. В качестве параметров ей передаются название файлов , директорий.
И вобщем все нормально если я использую JBuilder со встроенным Tomcat
Но как только я перебрасываю приложение на отдельный Tomcat
появляется проблема с кирилицей .

В упор отказывается воспринимать и обрабатывать кириллицу.
Получаю вместо символов ???
Допустим у меня директория Vingrad а в ней Винград
При обращении к 1-й он ее прекрасно видит причем поддиректорию Винград
понимает нормально видит ее, отображает нормально.
Но как только я обращаюся к Винград получаю исключение FileNоtFoundException
.....Vingrad\???????.

JDK SE используются одинаковые в обоих случаях.

PM MAIL   Вверх
batigoal
Дата 13.4.2005, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Кодировка страницы прописана?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
NetLord
Дата 13.4.2005, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 25.2.2005

Репутация: нет
Всего: нет



Да с кодировкой страницы все ОК.

PM MAIL   Вверх
Guest
Дата 18.4.2005, 09:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здесь важна не кодировка страницы, а кодировка request: request.setCharacterEncoding("Cp1251");
Этот вызов должен быть произведен до вызова getParameter().
В книге "Самоучитель Java 2.0" (автора не помню) это рекомендуется делать в фильтре.
Я пробовал - не получается.
Способы обхода проблемы:
1. Получить параметр в виде byte[] и перекодировать вручную
2. Передавать не имя файла, а его номер в каталоге
3. Перекодировать имя файла вручную (например используя транслит)
  Вверх
NetLord
Дата 18.4.2005, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 25.2.2005

Репутация: нет
Всего: нет



Спасибо, я разобрался.
Воспользовался кодировщиком из пакета apache.commons так как родной URLEncoder
сбоил. Сразу стал понимать кириллицу из параметров request - хотя внешне оба кодировщика выдавали один и тот же результат.
В чем баг не пойму smile
PM MAIL   Вверх
3,14
Дата 19.4.2005, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

Репутация: 3
Всего: 24



NetLord - а код старый и новый не запостишь?


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
NetLord
Дата 20.4.2005, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 25.2.2005

Репутация: нет
Всего: нет



3,14
NetLord - а код старый и новый не запостишь?

Новый код
Код

<%request.setCharacterEncoding("Cp1251");%>
<%@ page contentType="text/html; charset=windows-1251" %>
<%@ page import="java.io.*,org.apache.commons.codec.net.URLCodec" %>
<html>
<head>
<title>
LIST
</title>
</head>
<body bgcolor="#ffffff">
 <%
URLCodec codec=new URLCodec("Cp1251");
 String directory=request.getParameter("dir");
 File f;
 String audio="C:\\audio";
 if (directory==null)
 directory="";
 directory=new String(directory.getBytes(),"Cp1251");
 audio+=directory+"\\";
 try{
   f=new File(audio);
 File[] files=f.listFiles();
 //url for directory and file
 String url,furl;
 //view directory path
 if(!directory.equals("")){
 String temp=directory.substring(0,directory.lastIndexOf("\\"));
 url=codec.encode(temp);
 %>
 <h1>
<%=directory%>
</h1>
 <A HREF="<%="mediajsp.jsp?dir="+url%>"><img src="image/folder.gif">...</A>
 <%}
for (int j=0;j<files.length;j++){
    if (files[j].isDirectory()==true){
          url=directory+"\\"+files[j].getName();
          url=codec.encode(url); %>
<br><img src="image/folder.gif"><A HREF="<%="mediajsp.jsp?dir="+url%>"><%=files[j].getName()%></A>
          <%}
          else{
            [color=red]url=codec.encode(files[j].getName());
            furl=codec.encode(directory);[/color]
          %>
<br><img src="image/mp.gif"><A HREF="<%="mp?file="+url+"&dir="+furl%>"><%=files[j].getName()%></A>

 <%
 }
 }
 }
 catch(Exception e){}
 %>
</body>
</html>



Отличие старого только в том что в качестве кодека я использовал
класс java.net.URLEncoder вместо org.apache.commons.codec.net.URLCodec

Это сообщение отредактировал(а) NetLord - 20.4.2005, 12:11
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0458 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.