Обработка испанских символов в Java / JSP - PullRequest
1 голос
/ 06 июля 2010

У меня есть небольшое веб-приложение, которое обрабатывает много текста на испанском языке.

В одном месте кода страница JSP отвечает с Json String, содержащим часть этого текста. Если я печатаю String на консоли, это выглядит как бред. Но если я проверю заголовок / содержание ответа в Chrome Developer Tools, он выглядит правильно. Передается в правильной кодировке. Эта часть веб-приложения работает как положено.

В другом месте кода другая страница JSP отвечает HTML. Часть этого HTML содержит больше текста на испанском языке. На этот раз текст передается (и отображается) как фальшивка.

Каковы потенциальные причины, по которым это может происходить? Оба раза я просто печатаю текст, используя out.print. Почему это работает в одной точке, а не в другой?

Примеры:

// In a file who's only output is the json string
String jsonString = ...
System.err.println(jsonString); // prints jibberish
out.println(jsonString); // looks correct when the response is viewed in Chrome Developer tools, and looks correct in a browser

...

// In a file who's output is a complete html page
String spanishText = ...
out.println("<label>" + spanishText + "</label>"); // looks like jibberish when the response is viewed in Chrome developer tools, and shows up as jibberish in a browser

1 Ответ

1 голос
/ 06 июля 2010

Вам необходимо установить кодировку, которую должен использовать ответ JSP / Servlet для печати символов и дать указание веб-браузеру использовать ту же кодировку.

Это можно сделать, поместив это поверх JSP:

<%@ page pageEncoding="UTF-8" %>

Или, если вы на самом деле делаете это в сервлете:

response.setCharacterEncoding("UTF-8");

"Джиббериш" при использовании System.err - это другая проблема.Вам необходимо установить кодировку консоли / файла журнала, которая использовалась для печати этой информации.Если это, например, Eclipse, то вы можете установить его с помощью Window> Preferences> General> Workspace> Кодировка текстового файла .

См. Также:

...