Кодировка символов JSP - отображается неправильно в JSP, но не в URL: «á» á é »Ã ©»

  1. Изменить строку для разделения каждого символа с помощью разделителя [это включить нечетные и четные палиндромы]
  2. Найти палиндромы вокруг каждого символа, рассматривая его как центр

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

Образец:

word = abcdcbc

modifiedString = a # b # c # d # c # b # c

palinCount = 1010105010301

длина самого длинного палиндрома = 5;

самый длинный палиндром = bcdcb

открытый класс MyLongestPalindrome {

static String word;
static int wordlength;
static int highestcount = 0;
static int newlength;
static char[] modifiedString; // stores modified string
static int[] palinCount; // stores palindrome length at each position
static char pound = '#';

public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    System.out.println("Enter String : ");
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader bfr = new BufferedReader(isr);
    word = bfr.readLine();
    wordlength = word.length();
    newlength = (wordlength * 2) - 1;
    convert();
    findpalindrome();
    display();
}

// Inserting # in string
public static void convert() {

    modifiedString = new char[newlength];
    int j = 0;
    int i;
    for (i = 0; i < wordlength - 1; i++) {
        modifiedString[j++] = word.charAt(i);
        modifiedString[j++] = pound;
    }
    modifiedString[j] = word.charAt(i);
}

// display all palindromes of highest length
public static void display() {
    String palindrome;
    String s = new String(modifiedString);
    System.out.println("Length of longest palindrome = " + highestcount);
    for (int i = 0; i < newlength; i++) {
        if (palinCount[i] == highestcount) {
            palindrome = s.substring(i - (highestcount - 1), i
                    + (highestcount));
            i = i + (highestcount - 1);
            palindrome = palindrome.replace("#", "");
            System.out.println(palindrome);
        }
    }
}

// populate palinCount with length of palindrome string at each position
public static void findpalindrome() {
    int left, right, count;
    palinCount = new int[newlength];
    palinCount[0] = 1;
    palinCount[newlength - 1] = 1;
    for (int i = 1; i < newlength - 1; i++) {
        count = 0;
        left = i - 1;
        right = i + 1;
        ;
        if (modifiedString[i] != pound)
            count++;
        while (left >= 0 && right < newlength) {
            if (modifiedString[left] == modifiedString[right]) {
                if (modifiedString[left] != pound)
                    count = count + 2;
                left--;
                right++;
            } else
                break;
        }

        palinCount[i] = count;
        highestcount = count > highestcount ? count : highestcount;

    }

}

}

13
задан 5 revs, 2 users 52% 23 May 2017 в 12:26
поделиться

8 ответов

У нас была подобная проблема. Это было решено, когда все JSPs были сохранены с BOM UTF-8.

3
ответ дан 23 May 2017 в 12:26
поделиться

Проверьте установку соединителя в своей конфигурации кота. Существует опция (URIEncoding), можно установить для обработки URIs как UTF-8. По умолчанию их рассматривают как ISO-8859-1.

3
ответ дан 23 May 2017 в 22:26
поделиться

Прежде всего я понятия не имею , как для решения этого, так как я не знаю много о Java и JSP.

сказавший, что: символы на правой стороне Вашей таблицы являются кодировкой UTF-8 левой стороны. Таким образом, где-нибудь в Вашем коде, Вы интерпретируете байты как латинский 1 (или независимо от того, что Ваша кодировка по умолчанию), где они на самом деле представляют закодированные символы UTF-8...

1
ответ дан Arnout 23 May 2017 в 22:26
поделиться

Просто произвольное предположение. Попробуйте эту внутреннюю часть Ваш JSP/Servlet:

if(request.getCharacterEncoding() == null) {
   request.setCharacterEncoding("UTF-8");
}

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

7
ответ дан kgiannakakis 23 May 2017 в 22:26
поделиться
  • 1
    @barlop, точка/S то, если Вы don' t знают заранее, встроила ли команда кавычки или нет. Если существует точно две кавычки на командной строке, ее рассматривают по-другому по умолчанию, если существует точно два символа кавычки, чем если бы существует больше или меньше./S заставляет его рассматриваться то же. It' s зарегистрированный: Просто введите " справка cmd" на командной строке. – Ben 21 December 2012 в 03:14

Проблема состоит в том, что информация, отправленная браузером, не имеет четко определенного кодирования и нет никакого пути в HTTP для определения его.

К счастью большинство браузеров будет использовать кодирование страницы, которая содержит форму. Таким образом, при использовании UTF-8 на всех страницах затем большинство браузеров отправит все данные в кодировке UTF-8 также (и примеры показывают, что это точно, как это отправляется).

, К сожалению, наиболее распространенные серверы JAVA-приложения действительно не обрабатывают случай (не может обвинить их, это - главным образом догадки так или иначе).

можно сказать серверу приложений рассматривать любой вход как UTF-8 путем вызова

request.setCharacterEncoding("UTF-8");

На основе стиля кодирования и платформ, которые Вы используете, это могло бы быть к последнему, когда поток управления достигает Вашего кода, таким образом, могло бы быть возможно сделать это в javax.servlet.Filter.

3
ответ дан Joachim Sauer 23 May 2017 в 22:26
поделиться
  • 1
    Сделайте математику в моем ответе. Например, если (N, D) закрытый ключ, который соответствует (N, E) где E = 65537, тогда (N, E'), где E' = 65537*k*phi (Н) также будет открытым ключом, который соответствует (N, D). Если у Вас есть оба (N, E) и (N, E') Вы можете грубая сила k только путем рассмотрения размера E' по сравнению с N, вычисляя M = (E'-E)/k, D' = 1/E модификация M и выполняющий несколько операций RSA для проверки. Безопасность является нулем RSA в таком случае. Можно сделать это вычисление в части секунды на современном компьютере. – Henrick Hellström 22 February 2012 в 08:18

Я думаю, что проблема могла бы состоять в том, что браузер не указывает сообщение формы, чтобы быть utf-8. Существует много для чтения о сообщениях формы и кодировке в сети, несколько веб-платформ обеспечивают фильтры кодировки символов для 'устранения' этой проблемы, возможно точно так же, как идея для фиксации была - посмотрите, например http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/web/filter/CharacterEncodingFilter.html

1
ответ дан Simon Groenewolt 23 May 2017 в 22:26
поделиться
  • 1
    и это должно быть 0xff/sizeof(*x), что он добавляет. – Johannes Schaub - litb 29 April 2012 в 20:09

Попытайтесь установить URIEncoding в {jboss.server}/deploy/jboss-web.deployer/server.xml.

Исключая:

<Connector port="8080" address="${jboss.bind.address}"    
     maxThreads="250" maxHttpHeaderSize="8192"
     emptySessionPath="true" protocol="HTTP/1.1"
     enableLookups="false" redirectPort="8443" acceptCount="100"
     connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
11
ответ дан 23 May 2017 в 22:26
поделиться
  • 1
    @Ben here' s пример внешних кавычек, заметьте, что/S ничего не делает в той Попытке ситуации он pastebin.com/raw.php?i=t60teCTk cmd/s/c " " c:\program files\replace.exe" > " c:\temp\my folder\a.a"" и все еще с внешними кавычками, но удалением/S т.е. cmd/c " " c:\program files\replace.exe" > " c:\temp\my folder\a.a"" – barlop 20 December 2012 в 16:04

Do you use RequestDumper? If it is configured in deploy/jboss-web.deployer/server.xml then try to remove it and then test your encoding.

1
ответ дан 1 December 2019 в 19:15
поделиться
Другие вопросы по тегам:

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