Как правильно интерпретировать аргументы с UMLAUTE с JSP-PAGE [Дубликат] -- string поле с участием jsp поле с участием utf-8 поле с участием character-encoding поле с участием diacritics пол Связанный проблема

How to correctly interpret arguments with Umlaute from a JSP-page [duplicate]


2
vote

проблема

русский
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»>
Этот вопрос уже есть ответы здесь :
Как пройти символы Unicode как jsp / jsp / servlet request.getparameter? < / a> (4 ответа)
Закрыто 4 года назад .

Я получаю вход от поля ввода текста на странице JSP, которые могут содержать UMLAUTE. (например, Ä, Ö, ü, ä, ö, ü, ß).

Обработка ввода работает нормально для не-умла. Но всякий раз, когда UMLAUT вводится в поле ввода, включена неправильное значение.

Например:

    .
  • Если "Ä" (UTF-8: U + 00E4) вводится в поле ввода,
  • Строка, которая извлечена из аргумента «¤¤» (UTF-8: U + 00C3 и U + 00A4)

Мне кажется, как если бы шестнадцатеричный кодировщик UTF-8 (который представляет собой C3 A4 для «Ä»), получает для преобразования.

Как я могу получить правильное значение?


Вот фрагменты из текущей реализации:

JSP-PAGE передает входное значение «PK» на логике обработки:

 <код> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ... <input type="text" name="<%=pk.toString()%>" value="<%=value%>" size="70"/> <button type="submit" title="Edit" value='Save' onclick="action.value='doSave';pk.value='<%=pk.toString()%>'"><img src="icons/run.png"/>Save</button>   

Значение получает извлечение из ARGS и преобразовано в строку:

 <код> UUID pk = UUID.fromString(args.get("pk")); //$NON-NLS-1$ String value = args.get(pk.toString());   

Примечание. UMLAUTE, сохраненные в базе данных, отображаются правильно на странице.

Английский оригинал

I'm getting input from a text input field on a JSP page, that can contain Umlaute. (e.g. Ä,Ö,Ü,ä,ö,ü,ß).

Processing the input works fine for non-Umlaute. But whenever an Umlaut is entered in the Input field an incorrect value gets passed on.

For example:

  • If an "ä" (UTF-8:U+00E4) gets entered in the input field,
  • the String that is extracted from the argument is "ä" (UTF-8: U+00C3 and U+00A4)

It seems to me as if the UTF-8 hex encoding (which is c3 a4 for an "ä") gets used for the conversion.

How can I retrieve the correct value?


Here are snippets from the current implementation:

The JSP-page passes the input value "pk" on to the processing logic:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ... <input type="text" name="<%=pk.toString()%>" value="<%=value%>" size="70"/> <button type="submit" title="Edit" value='Save' onclick="action.value='doSave';pk.value='<%=pk.toString()%>'"><img src="icons/run.png"/>Save</button> 

The value gets retrieved from args and converted to a string:

UUID pk = UUID.fromString(args.get("pk")); //$NON-NLS-1$ String value = args.get(pk.toString()); 

Note: Umlaute that are saved in the Database get displayed correctly on the page.

</div
              

Список ответов

5
 
vote
vote
Лучший ответ
 

. Примечание: Umlaute, которые сохраняются в базе данных некорректной отображается на странице

<Р> В связи с этим, я буду считать, что вы уже правильно установить кодировку ответа на UTF-8 либо <код> <%@page pageEncoding="UTF-8"%> в JSP или <код> <jsp-config> в < код> web.xml . <Р> Left за кодировкой запроса. Вы не совсем ясно, в вашем вопросе, ни код, если вы используете GET или POST. Если вы используете POST, то вам нужно создать сервлет фильтр , который явно задает тело запроса HTTP кодирующий:
 <код> request.setCharacterEncoding("UTF-8");   
<Р> Или, если вы используете GET, то вам нужно копаться в конфигурации сервера для установки / кодирования параметра URI в UTF-8. Как это сделать, зависит от используемого сервера, который также не ясно, от вопроса, не говоря уже из истории вопроса. Я поэтому просто приведу пример Tomcat: установите <код> URIEncoding атрибут <код> <Connector> в Tomcat в <код> /conf/server.xml :
 <Код> NSApplicationSupportDirectory0  

Смотрите также:

    .
  • Unicode - Как получить символы верно?
 

Note: Umlaute that are saved in the Database get displayed correctly on the page.

Due to this fact, I'll assume that you've already properly set the response encoding to UTF-8 by either <%@page pageEncoding="UTF-8"%> in JSP or by <jsp-config> in web.xml.

Left behind the request encoding. You wasn't clear in your question nor the code if you're using GET or POST. If you're using POST, then you'd need to create a servlet filter which explicitly sets the HTTP request body encoding:

request.setCharacterEncoding("UTF-8"); 

Or if you're using GET, then you'd need to dig in the server configuration to set the URI/parameter encoding to UTF-8. How to do that depends on the server used which is also not clear from the question, let alone from your question history. I'll therefore just give an example of Tomcat: set the URIEncoding attribute of the <Connector> element in Tomcat's /conf/server.xml:

<Connector ... URIEncoding="UTF-8"> 

See also:

  • Unicode - How to get the characters right?
</div
 
 
 
 

Связанный проблема

0  Как нарисовать текст, char by char в lwjgl / slick2d  ( How to draw text char by char in lwjgl slick2d ) 
Я хочу попросить, чтобы кто-то знал, как нарисовать строку, char by char в интервале, например, 0.25SEC? <код> "H" (0.25sec) "e" (0.25sec) "l" (0.25sec) "l"...

0  Как бы я избавился от определенных персонажей, а затем выпустите очищенную струну в Python?  ( How would i get rid of certain characters then output a cleaned up string in pyt ) 
В этом фрассетере кода я пытаюсь получить ссылки на изображения, размещенные в группеЧанчатке определенным пользователем: <код> import groupy from groupy im...

3  Как заменить символ в строке с символом не ASCII в Python?  ( How to replace a character in a string with a non ascii character in python ) 
Я хочу заменить знак номера (#) символом, аналогичным тому, что называется резким знаком музыки (♯). Я попробовал следующую линию, но не работал. <код> res[...

673  Как удалить текст из строки?  ( How to remove text from a string ) 
У меня есть <код> data-123 строка. Как я могу удалить <код> data- из строки при выходе из <код> 123 ? ...

3  Какой самый эффективный способ найти длину самого длинного предмета в списке?  ( Whats the most efficient way to find the length of the longest item in a list ) 
Учитывая список разных слов длины, какой лучший способ найти максимальную длину любых слов? Например, следующее должно вернуть 6 <код> findMaxLen("a,set,o...

3  Алгоритм быстрее чем BMH (Boyer-Moore-Harspool)  ( Algorithm faster than bmh boyer moore horspool search ) 
Какой алгоритм вы бы использовали для поиска коротких подстроек в коротких текстах? К метку я имею в виду 5-10 символов для подстроки и 255 для строки. Я дума...

4  Строка :: Новая: что это?  ( Stringnew what is it ) 
Я из фона Java и изучает C ++. Я столкнулся с следующим C ++: <код> String source = String::New("'Hello' + ', World'"); Как то, что я так понимаю, это ...

0  PHP Wrage код не работает  ( Php swear code doesnt quite work ) 
У меня есть этот код ниже, который работает ish ish. <код> $swearWords = file("blacklist.txt"); foreach ($swearWords as $naughty) { $post = str_ireplace...

5  AngularJS Дата ввода, позволяющий нулевой вход  ( Angularjs date input allowing null input ) 
относительно новое для Angularjs Я прочитал документацию ввода даты здесь: angularjs Дата ввода даты Он утверждает, что модель (данные входные обязаны) до...

1  Как мне найти любую строку Perl?  ( How do i find any string perl ) 
Я новый в Perl, и у меня есть проблема. Я хотел бы найти любую строку в этой части кода: <код> my $change = $item->look_down( _tag=> 'td', class => 'col...

0  Как я могу хранить разные виды операторов в 2D-массиве в C?  ( How can i store different kinds of operators in a 2d array in c ) 
Я хочу сделать функцию y = f (x) в виде строки и выяснить операторы в нем, чтобы хранить их в 2D-массиве, где каждый операторы будут рассматриваться как разде...

0  Как остановить программу хранения более одного символа в переменную CHAR? [Дубликат]  ( How to stop a program from storing more than a single character into a char vari ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

71  Разница между строкой и StringBuilder в C #  ( Difference between string and stringbuilder in c sharp ) 
В чем разница между <код> string и <код> StringBuilder ? Кроме того, какие бы некоторые примеры к пониманию? ...

639  Простой способ повторить строку  ( Simple way to repeat a string ) 
Я ищу простого метода или оператора Commons, который позволяет мне повторить несколько строк N Times. Я знаю, что я могу написать это, используя A для цикла...

3  Представление строки в C #  ( String representation in c sharp ) 
IM TRING, чтобы взять на себя текст из существующей веб-страницы, используя этот метод: <код> try { WebClient client = new WebClient(...