Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 16

Кодировка символов (код символа)

03.08.2016, 16:26. Показов 5840. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте господа. Такой вопрос. При получении кода символа при помощи
Java
1
(char)'символ'
столкнулся с проблемой. Символ 'в' - русская маленькая буква в и цифра 2 имеют одит и тот же код - 50. Соответственно так же со всеми - а=0=48...и т.п. То есть цифра в кодировке ascii и utf-8 имеет правильный код. С латинскими символами так же все впорядке. С кириллицей - печаль. Подскажите в чем соль.

Оговорюсь также - при использовании
Java
1
(int)'символ'
Все работает прекрасно, по таблице юникода всё правильно. Но мне для простоты нужна именно (char) форма.
Спасибо
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.08.2016, 16:26
Ответы с готовыми решениями:

Сравнение символов через код символа
есть задание выбрать неповторяющиеся символы и расположить в порядке убывания их кодов. с первым справится не проблема да и со вторым...

Дана строка символов. Заменить все вхождения символа '{' на 'begin' , а каждое вхождение символа '}' - на 'end'
дана строка символов. Заменить все вхождения символа '{' на 'begin' , а каждое вхождение символа '}' - на 'end' блок-схему плиз!

Дана строка символов. Заменить все вхождения символа ‘{’ на ‘begin’, а каждое вхождение символа ‘}’ – на ‘end’
3. Дана строка символов. Заменить все вхождения символа ‘{’ на ‘begin’, а каждое вхождение символа ‘}’ – на ‘end’. Добавлено через 1...

9
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
03.08.2016, 18:30
Лучший ответ Сообщение было отмечено vxg как решение

Решение

Java
1
byte[] b = str.getBytes( "Cp1251" );
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
03.08.2016, 20:23
Цитата Сообщение от opanasa Посмотреть сообщение
Символ 'в' - русская маленькая буква в и цифра 2 имеют одит и тот же код - 50.
Впервые такое слышу. Это в какой кодировке? Явное нарушение стандарта. Если ASCII, то там кириллица вынесена во вторую половину таблицы.
Вполне вероятно, что при получении символа вы отбрасываете один из двух байтов, что вообще неправильно.
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
04.08.2016, 08:28
CoolMind, он так и пишет - берётся первый байт - у русских букв первый байт 50 что странно ибо в UTF-8 первый должен быть D0
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 16
04.08.2016, 12:00  [ТС]
Java
1
      byte[] b = str.getBytes( "Cp1251" );
Символ русской буквы в выдает код "-30". Собственно ведь правильно. Byte от -128 до 127 вроде. А вот сам номер (226) получать вычитанием 256 - 30?
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
04.08.2016, 12:21
opanasa, или так или так
Java
1
2
byte b = 123;
int i = b & 0xFF;
или через Byte.toUnsignedInt
0
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 16
04.08.2016, 18:31  [ТС]
Спасибо за помощь. Получать - получаю номера. -30 символ в. Складываю -30 и 256 и 226 искомый номер. Хорошо.
Но не подскажете как из минусового номера получить обратно символ.
Java
1
2
byte str = -30;
System.out.println ((char)str);
Даёт странные символы. Видимо из кодировки unicode. При задании номера 1074, как там выдаёт именно букву в. У меня же цель получить из отрицательных обратно.
Может как то можно указать кодировку? Спасибо
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
04.08.2016, 19:33
opanasa, я думаю есть функции обратные той которые вы используете для получения байт из строки - ими вы и получите строку из байт, попробуйте пробить эту мысль
0
R0
17 / 17 / 13
Регистрация: 06.08.2015
Сообщений: 73
05.08.2016, 10:27
Цитата Сообщение от opanasa Посмотреть сообщение
Может как то можно указать кодировку?
Русские символы расположены в ASCII таблице после 128 знака, поэтому для
Java
1
byte
java они будут всегда отрицательными, в СИ можно использовать
C
1
unsigned char
, а вам проще писать
Java
1
char
- в java он 16 бит
Java
1
2
3
4
        byte str = -30;
        char symb = (char)str;
        symb &= 0x00ff;
        System.out.println (symb);
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
05.08.2016, 12:56
opanasa
Java
1
2
3
byte[] b;
...
String str = new String(b, "cp1251");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.08.2016, 12:56
Помогаю со студенческими работами здесь

Дано 2 символа. Верно ли, что код только одного символа кратен 3
помогите решить задачу: дано 2 символа. верно ли , что код только одного символа кратен 3 вот мое решение, исправьте, если есть...

Кодировка символа
Всем доброго времени суток!У меня возник вопрос при работе со строками,как символ перевести в дос-кодировку?строка без проблем при...

Даны три символа. Верно ли, что код ни одного символа не является большой русской буквой
даны три символа. верно ли, что код ни одного символа не является большой русской буквой

Замена одного символа другим и кодировка
1. Пытаюсь в строке заменить символ "1" символом "|". Для этого делаю следующее: ...

Почему в коде сайта кодировка вместо символа?
Привет всем. Вообщем проблема такая. Когда я запускаю программу и открываю на сайте определенный... не знаю как правильно сказать, вообщем...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru