? является единственным выходом для всего юникода выше U + 0080 в java [duplicate]

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

  1. Для действительного положительного целого:
    private static int parseInt(String str) {
        int i, n = 0;
    
        for (i = 0; i < str.length(); i++) {
            n *= 10;
            n += str.charAt(i) - 48;
        }
        return n;
    }
    
  2. ] Как для положительных, так и для отрицательных целых чисел:
    private static int parseInt(String str) {
        int i=0, n=0, sign=1;
        if(str.charAt(0) == '-') {
            i=1;
            sign=-1;
        }
        for(; i<str.length(); i++) {
            n*=10;
            n+=str.charAt(i)-48;
        }
        return sign*n;
    }
    
  3. Если вы ожидаете пробел до или после этих чисел, убедитесь, что перед обработкой обязательно выполните str = str.trim().
3
задан user2821099 29 September 2013 в 10:23
поделиться

5 ответов

Поведение Java по умолчанию при чтении недопустимого символа юникода заключается в замене его на заменяющий символ (\ uFFFD). Этот символ часто отображается как знак вопроса.

В вашем случае текст, который вы читаете, не закодирован как unicode, он закодирован как что-то еще (Windows-1252 или ISO-8859-1, вероятно, наиболее распространенные альтернативы, если ваш текст на английском языке).

0
ответ дан Aurand 1 September 2018 в 04:16
поделиться

Вот отличная статья , написанная Джоэлом Спольским, по этой теме. Это не поможет вам решить вашу проблему, но это поможет вам понять, что происходит. Это также покажет вам, насколько это реально.

3
ответ дан Daniel Kaplan 1 September 2018 в 04:16
поделиться

Вы уверены, какая кодировка вам нужна? Возможно, вам придется явно кодировать ваш вывод как UTF-8 или ISO 8859-1, если вы имеете дело с европейскими символами.

0
ответ дан It Grunt 1 September 2018 в 04:16
поделиться

Я написал библиотеку с открытым исходным кодом, в которой есть утилита, которая преобразует любую последовательность String в Unicode и наоборот. Это помогает диагностировать такие проблемы. Так, например, чтобы напечатать свою строку, вы можете использовать что-то вроде этого:

String str= StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString("\\u0197" +
   StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence("Test"));

Вы можете прочитать о библиотеке и где ее загрузить и как ее использовать в библиотеке Open Source Java со стеклом фильтрация трассировки, синтаксический анализ строк Unicode-конвертер и сравнение версий См. параграф «Конвертер строк Unicode»

0
ответ дан Michael Gantman 1 September 2018 в 04:16
поделиться

У вас есть кодировка символов, которая не соответствует символу, который у вас есть, или поддерживаемым символам на экране.

Я бы проверил, какую кодировку вы используете, и попытайтесь определить, читаете ли вы , правильное сохранение или печать значения.

2
ответ дан Peter Lawrey 1 September 2018 в 04:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: