Добавьте jstl-1.2.jar
в папку tomcat/lib
.
При этом ваша ошибка зависимостей будет исправлена снова.
В целом Вы не можете сделать этого. UTF-8 способен к кодированию любой кодовой точки Unicode. ISO-8859-1 может обработать только крошечную часть их. Так, транскодирование от ISO-8859-1 до UTF-8 не является никакой проблемой. Движение назад от UTF-8 до ISO-8859-1 вызовет "символы замены" (�) для появления в тексте, когда неподдерживаемые символы найдены.
Для транскодирования текста:
byte[] latin1 = ...
byte[] utf8 = new String(latin1, "ISO-8859-1").getBytes("UTF-8");
или
byte[] utf8 = ...
byte[] latin1 = new String(utf8, "UTF-8").getBytes("ISO-8859-1");
можно осуществить больше контроля при помощи низшего уровня Charset
API. Например, можно повысить исключение, когда un-encodable символ найден, или используйте другой символ для текста замены.
Если Вы имеете String
, можно сделать это:
String s = "test";
try {
s.getBytes("UTF-8");
} catch(UnsupportedEncodingException uee) {
uee.printStackTrace();
}
, Если у Вас есть 'поврежденный' String
, Вы сделали что-то не так, преобразовывание String
к String
в другом кодировании является defenetely не способ пойти! Можно преобразовать String
в byte[]
и наоборот (учитывая кодирование). В Java String
с являются AFAIK, закодированным [1 110], но это - деталь реализации.
Говорят, что Вы имеете InputStream
, можно читать в byte[]
и затем преобразовать это в String
использование
byte[] bs = ...;
String s;
try {
s = new String(bs, encoding);
} catch(UnsupportedEncodingException uee) {
uee.printStackTrace();
}
или еще лучше (благодаря erickson) использование InputStreamReader
как этот:
InputStreamReader isr;
try {
isr = new InputStreamReader(inputStream, encoding);
} catch(UnsupportedEncodingException uee) {
uee.printStackTrace();
}