Всем добрый день.Как видно из темы, у меня проблемы с кодировкой в JSP. Не спешите отправлять меня на google.com, - я там уже был:)
Суть проблемы в следующем:
Есть два приложения: одно тестовое, другое рабочее.
В обоих приложениях есть JSP, на которых происходит практически одно и тоже.
Вот код JSP, тествого приложения:
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>Simple jsp page</title>
</head>
<body>
<%
byte [] tstbuf = new byte[]{-47, -124};
String testStr = new String(tstbuf, "UTF-8");
%>
<input class="text" maxlength="130" name="test_name_1" value="<%=testStr%>"/>
</body>
</html>
Как видно из кода, - в скриплете создается строка testStr, Значение у этой строки = "ф" (инициализируем строку через массив байт, применяя кодировку UTF-8). Далее значение этой строки присваивается текствому полю.
В данном случае все РАБОТАЕТ, т.е. когда я загружаю эту jsp, то в браузере у меня в текстовом поле буква ф.
если я в данной jsp поменяю первую строку на
<%@ page contentType="text/html;charset=Windows-1251" %>
то все также будет прекрасно работать!!!
Это было тестовое приложение. Теперь переходим к другому случаю:
В реальном приложении также есть JSP, у которой также как и в тестовой задано:
<%@ page contentType="text/html;charset=UTF-8" %>
и также есть тестовый скриплет:
<%
byte [] tstbuf = new byte[]{-47, -124};
String testStr = new String(tstbuf, "UTF-8");
%>
и тестовое текстовое поле
<input class="text" maxlength="130" name="test_name_1" value="<%=testStr%>"/>
Проблема в том что в этом случае, в текстовом поле не буква ф, а строка С„ .
Теперь еще один тест: ставим у этой jsp в качестве первой строки:
<%@ page contentType="text/html;charset=Windows-1251" %>
После этого все работает.
Как сами можете догадаца, - требуется чтобы корректно показывались не только русские буквы, но и немецкие, французские итп.
Соответственно Windows-1251 - не катит:( И необходимо чтобы заработал именно UTF-8
Собственно хотел узнать какие могут быть причины того что UTF-8 отказывается работать?
ЗЫЖ
также пытался в jsp в начале указывать респонсу его контент тайп:
response.setContentType("text/html;charset=UTF-8");
не помогло:(