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

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

28.04.2011, 05:24. Показов 6362. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru