Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
84
 Аватар для 84
28 / 33 / 12
Регистрация: 11.04.2016
Сообщений: 132

Ошибка при использовании кодировки

23.06.2016, 15:29. Показов 1922. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят,привет, есть такой кусок кода
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import sun.nio.cs.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
 
 
public class HTTPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(4343);
        while (true) {
            Socket socket = serverSocket.accept();
            try (InputStream in = socket.getInputStream();
                 OutputStream out = socket.getOutputStream()){
                    byte[] reqest = HttpUtils.readReqeustFully(in);
                    System.out.println(new String(reqest));
                    StringBuilder responseString = new StringBuilder();
                    responseString.append("Hello");
                    responseString.append(" дурак");
                    byte[] response = new Date().toString().getBytes(US_ASCII);
                    out.write(response);
            }finally {
                socket.close();
            }
        }
    }
}
Если в строку
Java
1
byte[] response = new Date().toString().getBytes(US_ASCII);
не ставить кодировку, то все работает, только русский язык "в кракозябрах". Смотрю видео Ивана Головоча - у него с таким синтаксисом работает. У меня же пишет
Code
1
2
3
Error:(25, 70) java: cannot find symbol
  symbol:   variable US_ASCII
  location: class HTTPServer
.
Может я с импортом что не так делаю? Кто поможет разобраться?

Добавлено через 12 минут
Ошибка только не в 25 а в 22 строке (имя пакета и пустая строка удалены =))
Code
1
2
3
Error:(22, 70) java: cannot find symbol
  symbol:   variable US_ASCII
  location: class HTTPServer
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.06.2016, 15:29
Ответы с готовыми решениями:

Ошибка при использовании jfreechart
Я использовал jfreechart для построения графика функцыи. В среде Netbeans все нормально работает , но при запуске вне среды netbeans...

Ошибка при использовании OpenGL в LWJGL3
Linux Mint 18.2 64-bit # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at...

Ошибка округления при использовании float или double
Да-да, избитая тема. Понятно, что любое нецелое число может быть представленно в современных компьютерах только с определенной точностью....

4
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
23.06.2016, 15:58
84, попробуйте импорт подправить:
Java
1
import static java.nio.charset.StandardCharsets.US_ASCII;
1
0 / 0 / 1
Регистрация: 21.12.2014
Сообщений: 16
23.06.2016, 17:43
HOBATOP, Спасибо, подправил. Теперь US_ASCII принимает, но как быть с русской кодировкой? Например KOI8-R или CP_1251. Их нет в StandardCharsets
0
 Аватар для HOBATOP
323 / 310 / 206
Регистрация: 14.09.2015
Сообщений: 827
23.06.2016, 20:50
Лучший ответ Сообщение было отмечено 84 как решение

Решение

Lelik_bot, а UTF_8 чем не устраивает? Ну или вот так:
Java
1
byte[] response = new Date().toString().getBytes("CP1251");
возможен вариант
Java
1
byte[] response = new Date().toString().getBytes(Charset.defaultCharset());
Я же полностью Вашу задумку не вижу, примерьте чего больше устроит...
1
84
 Аватар для 84
28 / 33 / 12
Регистрация: 11.04.2016
Сообщений: 132
24.06.2016, 08:19  [ТС]
HOBATOP, Спасибо большое за помощь. Собственно у меня были косяки в коде, потому что это эксперементальный код =).
Однако, если возможно, продолжу обсуждение вопроса.
Собственно с docs.oracle.com
byte[] getBytes()
Encodes this String into a sequence of bytes using the platform's default charset, storing the result into a new byte array.
byte[] getBytes(Charset charset)
Encodes this String into a sequence of bytes using the given charset, storing the result into a new byte array.
void getBytes(int srcBegin, int srcEnd, byte[] dst, int dstBegin)
Deprecated.
This method does not properly convert characters into bytes. As of JDK 1.1, the preferred way to do this is via the getBytes() method, which uses the platform's default charset.
byte[] getBytes(String charsetName)
Encodes this String into a sequence of bytes using the named charset, storing the result into a new byte array.
Имеем 4 сигнатуры метода, в которых нас больше всего интересуют 2:
byte[] getBytes(Charset charset) и byte[] getBytes(String charsetName).
Собственно разница только в типе данных в сигнатуре.
Из этого следует что кодировку можно указывать как экземпляр класса кодировки или указывать "имя" кодировки в виде строки. Собственно вопрос:
Для чего используются различные виды записи кодировки и какие могут возникнуть подводные камни.
Опять таки, в доках написанно что есть вот такой перечень "стандартных" чарсетов
US-ASCII Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character set
ISO-8859-1 ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1
UTF-8 Eight-bit UCS Transformation Format
UTF-16BE Sixteen-bit UCS Transformation Format, big-endian byte order
UTF-16LE Sixteen-bit UCS Transformation Format, little-endian byte order
UTF-16 Sixteen-bit UCS Transformation Format, byte order identified by an optional byte-order mark
Тогда откуда берутся кодировки, которые я вызываю по имени? (Конкретно в моем случае "CP1251")
Не прошу все разжевывать, но призываю к дискуссии, ибо спор порождает истину.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.06.2016, 08:19
Помогаю со студенческими работами здесь

Ошибка при использовании com.github.fommil.netlib.NativeSystemLAPACK
При сборке проекта smile.KrigingInterpolation на моменте LU разложения ругается на LAPACK. Помогите пожалуйста, как исправить подобные...

Ошибка 404 при использовании Spring Security
Пытаюсь сделать простое приложение со страницей логина на Spring Security и возникает проблема. При нажатии кнопки логина выскакивает...

Ошибка при использовании exec-maven-plugin
Начал изучать java ee. При сборке проекта maven-ом всё успешно собирается. Проблемы начинаются при попытке запустить main класс: mvn...

Ошибка при использовании пользовательской библиотеки JOGL
Столкнулся с проблемой при испоьзовании user library jogl-2.0 Все делал по этим инструкциям -...

Ошибка при использовании table.setRowFactory если увеличивается к-во данных в Таблице = java.lang.NullPointerException
Есть таблица goodsReceiptTable. При отображении выделяет строку красным цветом если ячейка пустая item.getPo().equals(""). Всё...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru