Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/30: Рейтинг темы: голосов - 30, средняя оценка - 4.87
 Аватар для popov654
33 / 33 / 7
Регистрация: 09.04.2011
Сообщений: 119

Это любопытно (русские буквы)

28.04.2011, 05:24. Показов 6339. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В моём приложении есть модуль, осуществляющий работу с сервером. Он занимается загрузкой графов на сервер и их получением оттуда. Графы передаются построчно, при сохранении на сервер пользователь указывает имя, имя должно быть уникально.
Русские буквы в имени я использовать не запрещал (видимо по наивности). Теперь столкнулся со странным явлением. Некий юзер загружает на сервер граф и называет его русским словом (литературным вполне словом, "дискретка" кажется) . Так вот. Когда я запускаю JAR архив, русские буквы показываютя нормально. Но стоит запустить то же самое приложене из NetBeans - вместо русских букв в списке графов для загрузки - квадраты.
Очевидно, что-то с кодировками. Причём что совсем уже странно - запрос на загрузку графа вроде как проходит (правда там вместо реальных данных был мусор, так что моя прога вылетала с исключением, пришлось дорабатывать код чтобы подстраховаться от таких ситуаций). А вот запрос на удаление - нет. То есть сервер-таки не опознаёт переданное имя и не находит в хэш-таблице соответствия. И поэтому ничего не удаляет.

Насчёт удаления завтра буду копать в чём дело, а насчёт квадратов у меня пока лишь одна версия - JRE, которая запускает JAR файлы на моей машине, новее чем JDK, которую видимо использует NetBeans. И поэтому ей русский текст не страшен. Хотя может дело совсем не этом...

У кого какие мысли по этому поводу? Запретить русские имена, обновить JDK, использовать какой-то специальный метод для перекодирования? Дело в том что имя (как и все остальные данные графа, которые правда представляют собой исключительно цифры и латинские буквы) передаётся чеез сокет по HTTP. И закодировано оно, надо думать, в UTF-8. Кто его знает, что там происходит по дороге...
Хотя с другой стороны - при первом варианте же читается.

Проблема встретилась на JDK 1.5.0_06 и 1.6.0_18. На JRE 5 увы не проверял что будет... На JRE 6 всё тип-топ
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.04.2011, 05:24
Ответы с готовыми решениями:

Русские буквы в консоли
Всем привет! В Notepad был создан код в кодировке UTF-8 без BOM. Однако при запуске программы в cmd иероглифы, причем пробовала в данном...

Русские буквы в консоли
Вчера основательно начал изучать этот замечательный язык. До этого уже было знакомство с эклипсом(где-то год назад), тогда мне это все было...

Регулярные выражения русские буквы
Вот в чем проблема. Программа считывает с файла текст и с помощью регулярного выражения обрабатывает его и записывает в новый файл. Но есть...

5
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
28.04.2011, 07:43
Цитата Сообщение от popov654 Посмотреть сообщение
И закодировано оно, надо думать, в UTF-8.
Т.е. ты на 100% не уверен?

Цитата Сообщение от popov654 Посмотреть сообщение
Когда я запускаю JAR архив, русские буквы показываютя нормально. Но стоит запустить то же самое приложене из NetBeans - вместо русских букв в списке графов для загрузки - квадраты.
Потому что, когда ты запускаешь JAR архив, кодировки устанавливаются в зависимости от ОС, а NetBeans, скорее всего, при запуске JVM устанавливает кодировки через ключи в соответствии со своими настройками.
1
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
28.04.2011, 10:20



И до кучи -
0
 Аватар для popov654
33 / 33 / 7
Регистрация: 09.04.2011
Сообщений: 119
29.04.2011, 04:19  [ТС]
Потому что, когда ты запускаешь JAR архив, кодировки устанавливаются в зависимости от ОС, а NetBeans, скорее всего, при запуске JVM устанавливает кодировки через ключи в соответствии со своими настройками.
Вот это похоже на правду. А где бы можно покопать NetBeans чтобы эти настройки поменять? Я смотрел, там этих настроек дофига. Очень трудно найти то, что нужно.
Кстати, любопытный момент: NetBeans 5.5 (которую я поставил из-за того, что в ней визуальный редактор форм генерирует правильный код под Java 5) ни в какую не хочет отображать руссский текст комментов, набранный в NetBeans 6.8. Ковыряние в настройках ничего не дало (наверно, не там ковырял). Кстати, русский текст, набранный в версии 5.5, в 6.8 превращается в квадратики.

А ещё у меня в одном месте использовался символ бесконечности. Так вот, стоило открыть этот файл в NetBeans 5.5, как бесконечность превращалась в несколько кракозябр. Причём эти кракозябры после пересохранения отображались уже и в моей программе. При попытке скопировать символ из NetBeans 6.8 через буфер обмена в коде появлялась-таки бесконечность, но только до первого сохранения. После него она заменялась на вопросительный знак. И при компиляции в моей проге тоже был вопросительный знак.

Подозреваю, что проблема была в том, что редактор кода NetBeans 5.5 не знает, что такое UTF-8. В настройках я ничего на этот счёт не нашёл...
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
29.04.2011, 10:28
Цитата Сообщение от popov654 Посмотреть сообщение
Подозреваю, что проблема была в том, что редактор кода NetBeans 5.5 не знает, что такое UTF-8. В настройках я ничего на этот счёт не нашёл...
Java знает, что такое UTF-8, с момента рождения. NetBeans написан на Java. Так что редактор кода точно знает все, что нужно. А вот настроить его неправильно - несложно. К сожалению, 5.5 у меня нет, как там всё устроено не помню уже. В 6.9 всё настраивается в свойствах проекта (правой кнопкой на проекте, внизу меню Properties). Вот как на этом снимке:

Кстати, если Вы переключитесь на вкладку Libraries (), то первым пунктом там идет Java Platform и кнопка Manage Platforms, нажав которую Вы можете добавить любой Java SDK - у меня там 6-й и 7-й (). Выбрав нужный SDK из выпадающего списка Java Platform (а также версию языка в списке Source/Binary format на прошлой вкладке), Вы получите возможность использовать любую версию в одной и той же IDE. И для использования Java5 не придется ставить NB 5.5.
0
 Аватар для popov654
33 / 33 / 7
Регистрация: 09.04.2011
Сообщений: 119
29.04.2011, 22:06  [ТС]
Про то, что Вы написали во втором обзаце, я и так прекрасно знаю.
И поверьте, я это делал. Проблема в том, что на код, создаваемый визуальным редактором, это не влияет. Помните, я писал Вам на другом форуме про GroupLayout, которого нет в JDK5? Ну так вот, я слегка ошибся. Он есть, но как внешний модуль, расположенный совсем в другом месте.

Но самое забавное - я пытался заменять путь к этому классу с помощью функции "Найти и заменить". Так вот, NetBeans 6.8 после такой замены и смены платформы на пятую в настройках проекта всё равно подчёркивает код красным.

И да, то что Вы написали не объясняет, почему символы, набранные на русском в рзных версиях, не совместимы. Возможно, это и правда где-то есть в настройках, но я увы не нашёл.

Добавлено через 7 минут
Да, я кстати не замечал этих выпадающих списков внизу, спасибо за скриншот) Сейчас посмотрю, есть ли это в NetBeans 5.5
Вот ещё что странно: я сейчас тоже открыл граф и загрузил его на сервер под именем "дискретка". Сейчас в IDE русские буквы отображаются правильно! Может, у того товарища что-то с компом? Неправильные настройки кодировок?

Добавлено через 4 минуты
А, чтоб её!
Представляете как обидно, в NetBeans 5.5 нет нижнего поля, где можно выбрать кодировку исходного кода!

Добавлено через 14 минут
А перебор разных кодировок в NetBeans 6.8 тоже ничего не дал. Мне так и не удалось подобрать кодировку, при которой бы читался русский текст. Очевидно, это что-то однобайтовое. И точно не UTF-16 и не UTF-32. Это прямо в глаза бросается, если выставить такое значение, получается полная абракадабра. При UTF-8 код читается, но вместо русских букв квадраты. При всех остальных вариантах латиница читается нормально, а вместо русских букв - хрень. Наверно, какая-то однобайтовая нативная кодировка, поди теперь разберись, когда в настройках пятой версии этого нет...

А не могли за эти годы стандарты UTF-8 смениться? Ну мало ли... Иначе как ещё объяснить, по идее все версии NetBeans должны юзать её п умолчанию...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.04.2011, 22:06
Помогаю со студенческими работами здесь

В консоль не выводит русские буквы
Проблема в том что если я пишу допустим System.out.println("Введите название отдела"); то он отлично выводит русский, когда я пытаюсь...

Как отобразить русские буквы
Здравствуйте! Как отображать русские буквы в консоли?

Русские буквы в результатах тестирования JUnit
Доброго времени суток. При выводе на консоль (System.out.print) в методе main все русские буквы замечательно печатаются. При запуске...

Intelij IDE не выводит русские буквы
При запуске выводит какие то непонятные символы, кодировка стоит UTF - 8. Что не так? При чем в командной строке при кодировке 866 такая же...

Что изменить, чтобы нормально выводились русские буквы?
Как изменить конкретно эту программу, чтобы русские буквы нормально выводились в файл и на экран? package coursework; import...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru