Отображение всех символов в java

Это то, что у меня есть

public class CharacterArithmeticExperiment {
  public static void main(String[] args) {
    char start = '1';
    for(int i = 1; i < 500;i++){
      System.out.printf("%c", start + i);
    }
  }
}

выход:

23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~????????????????????????????????������������������������������������������������������������������������������������������������??????????????????????????????????????????????????????????????????????????????????��????????????��??????????????????????�????��???????????????????�??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

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

Набор символов вашей командной строки не UTF-8. Это не проблема с вашим кодом

Jens 10.09.2018 07:53

обратитесь также к таблица ascii - вы уже начинаете с ascii 50

Scary Wombat 10.09.2018 07:54

Символы до 128 идентичны во всех наборах символов. От 128 до 256 различаются от кодировки к кодировке. Символы выше 256 доступны только в Unicode / utf8

iPirat 10.09.2018 07:56

вы используете какую IDE или консоль

Pramod Yadav 10.09.2018 08:18

@iPirat Это явно неверное утверждение. Например, EBCDIC полностью отличается от наборов символов, производных от ASCII. Кроме того, Unicode и UTF-8 - это разные вещи. Юникод - это набор символов, UTF-8 - это способ представления указанных символов при передаче данных.

Torben 10.09.2018 08:47

Возможный дубликат Как я могу перебирать кодовые точки Unicode строки Java?

Torben 10.09.2018 08:48

Также stackoverflow.com/questions/26729378/…

Torben 10.09.2018 08:48

Чтобы узнать больше о персонажах, посетите unicode-table.com/en. Примечание: не все символы могут отображаться (Конец текста, Звонок, Backspace, Device-Control-Four, ...).

Peter Walser 10.09.2018 09:38

Повторяя @Jens, проблема в том, как текст перетекает из вашей программы на ваш экран. Пожалуйста, редактировать свой вопрос, чтобы описать эту часть. Ваш код будет работать за исключением диапазона от '\uD800' до '\uDFFF', потому что эти значения char должны быть правильно спарены для формирования символа (будет в String).

Tom Blodget 10.09.2018 13:51
0
9
1 918
1

Ответы 1

Тип данных char в java основан на значениях ascii. Каждый символ, символ и целое число связаны со значением ascii. В вашем коде:

public class CharacterArithmeticExperiment {
public static void main(String[] args) {
char start = '1';
for(int i = 1; i < 500;i++){
  System.out.printf("%c", start + i);
}
}
}

Здесь значение ascii '1' равно 49. В цикле для при добавлении я к Начните переменная Начните получает тип и становится 49. Таким образом, для первой итерации значение начало + я = 50 и символ, связанный со значением ascii 50, равен '2'. . Значения печатаются соответствующим образом и для следующих итераций. Таким образом, рабочий код для печати символов может соответствовать значениям ascii следующим образом:

public class CharacterArithmeticExperiment {
public static void main(String[] args) {
char start = 'a';
for(int i = 0; i < 26 ;i++){
  System.out.printf("%c", start + i);
}
}
}

ВЫХОД : abcdefghijklmnopqrstuvwxyz

для ссылки на таблицу значений ascii нажмите здесь

Замените ASCII на UTF-16, и это будет правильно. UTF-16 - одна из нескольких кодировок для набора символов Юникод. (Если бы вам когда-либо приходилось писать код, использующий ASCII, вы бы знали, какая спецификация требует этого. Например, RFC 7230. В противном случае ссылки на ASCII обычно ошибочны.)

Tom Blodget 10.09.2018 13:41

Другие вопросы по теме