| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
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
|
|
| Вернуться к началу |
|
 |
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 |
|
| Вернуться к началу |
|
 |
|