Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
opanasa
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 15
#1

Кодировка символов (код символа) - Программирование Android

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

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

Оговорюсь также - при использовании
Java
1
(int)'символ'
Все работает прекрасно, по таблице юникода всё правильно. Но мне для простоты нужна именно (char) форма.
Спасибо
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2016, 16:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Кодировка символов (код символа) (Программирование Android):

Java Android Кодировка символов
Здравствуйте. Какая кодировка у этих символов? И получится ли ее поменять для строки следующим образом, если нет, то почему и как это...

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

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

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

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

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

9
vxg
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,884
03.08.2016, 18:30 #2
Лучший ответ Сообщение было отмечено vxg как решение

Решение

Java
1
byte[] b = str.getBytes( "Cp1251" );
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
03.08.2016, 20:23 #3
Цитата Сообщение от opanasa Посмотреть сообщение
Символ 'в' - русская маленькая буква в и цифра 2 имеют одит и тот же код - 50.
Впервые такое слышу. Это в какой кодировке? Явное нарушение стандарта. Если ASCII, то там кириллица вынесена во вторую половину таблицы.
Вполне вероятно, что при получении символа вы отбрасываете один из двух байтов, что вообще неправильно.
0
vxg
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,884
04.08.2016, 08:28 #4
CoolMind, он так и пишет - берётся первый байт - у русских букв первый байт 50 что странно ибо в UTF-8 первый должен быть D0
0
opanasa
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 15
04.08.2016, 12:00  [ТС] #5
Java
1
      byte[] b = str.getBytes( "Cp1251" );
Символ русской буквы в выдает код "-30". Собственно ведь правильно. Byte от -128 до 127 вроде. А вот сам номер (226) получать вычитанием 256 - 30?
0
vxg
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,884
04.08.2016, 12:21 #6
opanasa, или так или так
Java
1
2
byte b = 123;
int i = b & 0xFF;
или через Byte.toUnsignedInt
0
opanasa
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 15
04.08.2016, 18:31  [ТС] #7
Спасибо за помощь. Получать - получаю номера. -30 символ в. Складываю -30 и 256 и 226 искомый номер. Хорошо.
Но не подскажете как из минусового номера получить обратно символ.
Java
1
2
byte str = -30;
System.out.println ((char)str);
Даёт странные символы. Видимо из кодировки unicode. При задании номера 1074, как там выдаёт именно букву в. У меня же цель получить из отрицательных обратно.
Может как то можно указать кодировку? Спасибо
0
vxg
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,884
04.08.2016, 19:33 #8
opanasa, я думаю есть функции обратные той которые вы используете для получения байт из строки - ими вы и получите строку из байт, попробуйте пробить эту мысль
0
R0
17 / 17 / 13
Регистрация: 06.08.2015
Сообщений: 73
05.08.2016, 10:27 #9
Цитата Сообщение от 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
Модератор
3229 / 2032 / 319
Регистрация: 13.01.2012
Сообщений: 7,884
05.08.2016, 12:56 #10
opanasa
Java
1
2
3
byte[] b;
...
String str = new String(b, "cp1251");
0
05.08.2016, 12:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2016, 12:56
Привет! Вот еще темы с решениями:

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

Замена одного символа другим и кодировка
1. Пытаюсь в строке заменить символ "1" символом "|". Для этого делаю следующее: (data_02.words_from_text.get(i)).replaceAll("1",...

Код символа в число символа
Подскажите плиз кто знает, каким способом можно присвоить переменной short bit = 0; значение символа под кодом (код в HEX) char symbol =...

определить, сколько символов ‘e’ предшествует первому вхождению символа ‘u’ ( либо сколько всего символов ‘e’ в этой последовательности)
определить, сколько символов ‘e’ предшествует первому вхождению символа ‘u’ ( либо сколько всего символов ‘e’ в этой последовательности,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru