RSS 2.0 Версия для КПК (Бета)
Конференция JavaTalks  :  Java форум
JavaTalks - форум программистов
Java форум JavaTalks
форум программистов 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
UТF-8 некорректно отображает три буквы -не те что подумали

 
Начать новую тему   Ответить на тему    Список форумов Java форум JavaTalks -> Локализация (l10n & i18n)
Предыдущая тема :: Следующая тема  
Автор Сообщение
sergionni
Новичок


Зарегистрирован: 16.02.2010
Сообщения: 10

СообщениеДобавлено: Мар 09, 2010 18:55    Заголовок сообщения: UТF-8 некорректно отображает три буквы -не те что подумали Ответить с цитатой

Есть такой код:
Код:
  File localFile = new File();
  localFile.setTitle(new String(file.getName().getBytes(), "UTF-8"));

При выводе имен файлов на UI в портлет, все киррилические буквы кроме с,э,я выводятся корректно.
Не пойму как так может быть, чтобы частично энкодилось?эээ...

вот скриншот:скрин

Спасибо за ответы.
--
Сергей
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Петр
Постоянный посетитель


Зарегистрирован: 06.04.2009
Сообщения: 573
Откуда: Москва

СообщениеДобавлено: Мар 09, 2010 19:02    Заголовок сообщения: RE: UТF-8 некорректно отображает три буквы -не те что подума Ответить с цитатой

) тоже с таким столкнулся. половина букв нормально а некоторые нет
надо брать входящую строку в нужной кодировке тоже
Код:
new String(file.getName().getBytes("windows-1251"), "UTF-8")
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
finalizer
Завсегдатай


Зарегистрирован: 19.01.2008
Сообщения: 1557

СообщениеДобавлено: Мар 09, 2010 20:35    Заголовок сообщения: Re: UТF-8 некорректно отображает три буквы -не те что подума Ответить с цитатой

sergionni писал(а):
Есть такой код:
Код:
  File localFile = new File();
  localFile.setTitle(new String(file.getName().getBytes(), "UTF-8"));

Откуда в классе File взялся методо setTitle() ?
Судя по всему file.getName() возвращает String. Если это так, то зачем вам понадобилось создавать новый String, да ещё таким экзотическим способом?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sergionni
Новичок


Зарегистрирован: 16.02.2010
Сообщения: 10

СообщениеДобавлено: Мар 09, 2010 22:29    Заголовок сообщения: RE: UТF-8 некорректно отображает три буквы -не те что подума Ответить с цитатой

Цитата:
надо брать входящую строку в нужной кодировке тоже

Привет, Петр, пробовал, все равно кракозяблы выводит.

Привет, finalizer.
Цитата:
Откуда в классе File взялся методо setTitle() ?

Это класс нашего проекта.

Цитата:
Судя по всему file.getName() возвращает String. Если это так, то зачем вам понадобилось создавать новый String, да ещё таким экзотическим способом?

Да, getName() возвращает String.
Начет способа, честно гворя первое , что пришло в голову, что бы могло засетить кодировку)
Поправте, если не прав.
--
Сергей
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
finalizer
Завсегдатай


Зарегистрирован: 19.01.2008
Сообщения: 1557

СообщениеДобавлено: Мар 10, 2010 1:12    Заголовок сообщения: Re: RE: UТF-8 некорректно отображает три буквы -не те что по Ответить с цитатой

sergionni писал(а):
Цитата:
Откуда в классе File взялся методо setTitle() ?

Это класс нашего проекта.

Лучше назвать его иначе. В противном случае можно столкнуться с массой неудобств.

sergionni писал(а):
Цитата:
Судя по всему file.getName() возвращает String. Если это так, то зачем вам понадобилось создавать новый String, да ещё таким экзотическим способом?

Да, getName() возвращает String.
Начет способа, честно гворя первое , что пришло в голову, что бы могло засетить кодировку)
Поправте, если не прав.
--
Сергей

Кодировка у String всегда одна и та же - UTF-16. Попробуйте просто localFile.setTitle(file.getName())
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sergionni
Новичок


Зарегистрирован: 16.02.2010
Сообщения: 10

СообщениеДобавлено: Мар 10, 2010 2:46    Заголовок сообщения: RE: UТF-8 некорректно отображает три буквы -не те что подума Ответить с цитатой

Цитата:
Лучше назвать его иначе. В противном случае можно столкнуться с массой неудобств.
согласен, такого рода кастомы лучше называть как-то уникально.
Цитата:
Попробуйте просто localFile.setTitle(file.getName())
изначально так и было - в том случае вся кириллица была исковеркана, сейчас же именно 'с','э','я', при чем нижний кейс только.

--
Сергей
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
finalizer
Завсегдатай


Зарегистрирован: 19.01.2008
Сообщения: 1557

СообщениеДобавлено: Мар 10, 2010 15:35    Заголовок сообщения: Re: RE: UТF-8 некорректно отображает три буквы -не те что по Ответить с цитатой

sergionni писал(а):
Цитата:
Попробуйте просто localFile.setTitle(file.getName())
изначально так и было - в том случае вся кириллица была исковеркана, сейчас же именно 'с','э','я', при чем нижний кейс только.

Значит проблема с кодировкой была раньше. Вы просто нашли не всегда работающий workaround. К какому классу принадлежит file и как вы его создаёте? Иными словами, как file получает имя?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sergionni
Новичок


Зарегистрирован: 16.02.2010
Сообщения: 10

СообщениеДобавлено: Мар 10, 2010 16:05    Заголовок сообщения: RE: UТF-8 некорректно отображает три буквы -не те что подума Ответить с цитатой

Цитата:
Вы просто нашли не всегда работающий workaround.
да, похоже на ситуативное решение
Цитата:
К какому классу принадлежит file и как вы его создаёте? Иными словами, как file получает имя?

file принадлежит классу SmbFile jcifs либы:
Код:
public class SmbFile extends URLConnection implements SmbConstants

file получаю, итерируя по SmbFile массиву,вот соотв куски кода:
Код:
           SmbFile[] files = remoteFolder.listFiles();
                for (SmbFile file : files) {
                        File localFile = new File();
                        localFile.setTitle(file.getName());


вот метод getNamе() из либы:
Код:
    public String getName() {
        getUncPath0();
        if( canon.length() > 1 ) {
            int i = canon.length() - 2;
            while( canon.charAt( i ) != '/' ) {
                i--;
            }
            return canon.substring( i + 1 );
        } else if( share != null ) {
            return share + '/';
        } else if( url.getHost().length() > 0 ) {
            return url.getHost() + '/';
        } else {
            return "smb://";
        }
    }
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
finalizer
Завсегдатай


Зарегистрирован: 19.01.2008
Сообщения: 1557

СообщениеДобавлено: Мар 10, 2010 17:15    Заголовок сообщения: RE: UТF-8 некорректно отображает три буквы -не те что подума Ответить с цитатой

http://jcifs.samba.org/src/docs/api/overview-summary.html

Вам нужно правильно установить jcifs.encoding
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sergionni
Новичок


Зарегистрирован: 16.02.2010
Сообщения: 10

СообщениеДобавлено: Мар 11, 2010 12:41    Заголовок сообщения: RE: UТF-8 некорректно отображает три буквы -не те что подума Ответить с цитатой

Пробовал сеттить, такое впечатление , что это св-во не применяетйся.
Буду копать дальше.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
finalizer
Завсегдатай


Зарегистрирован: 19.01.2008
Сообщения: 1557

СообщениеДобавлено: Мар 11, 2010 15:50    Заголовок сообщения: Re: RE: UТF-8 некорректно отображает три буквы -не те что по Ответить с цитатой

sergionni писал(а):
Пробовал сеттить, такое впечатление , что это св-во не применяетйся.

Как вы это делали?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sergionni
Новичок


Зарегистрирован: 16.02.2010
Сообщения: 10

СообщениеДобавлено: Мар 11, 2010 16:53    Заголовок сообщения: RE: UТF-8 некорректно отображает три буквы -не те что подума Ответить с цитатой

Цитата:
Как вы это делали?
в файл jcifs.properties нашего проекта вставил строчку:
Код:
jcifs.encoding = UTF-8
потом посмотрел в Supported Encodings таблицу, попробовал:
Код:
jcifs.encoding = UTF8
т.к. без дефиса - для .io,с дефисом - для .nio
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Java форум JavaTalks -> Локализация (l10n & i18n) Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Этот сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

GetJava Download Button Rambler's Top100
Хостинг от bizname.ru
При поддержке hitech.com.ua