и все будет хорошо.
рудно понять, как справиться с этой проблемой:
Я разрабатываю веб-инструмент для итальянского университета, и мне приходится отображать слова с ударением (например, è, ù, ...); иногда я получаю эти слова из таблицы PostgreSql (в кодировке UTF8), но в основном мне приходится читать длинные отрывки из файла. Эти файлы кодируются в формате utf-8 xml и прекрасно отображаются в Smultron или любом редакторе utf-8 (они были созданы при разборе старых файлов python с такими объектами, какè
вместо "è").
Я написал класс Java, который извлекает соответствующие сегменты из файла XML, который работает следующим образом:
String s = parseText(filename, position)
если я записываю возвращенную строку в файл, все выглядит нормально; проблема в том, что если я сделаю
out.write(s)
на странице JSP я получаю странные символы. Кстати, я использую
String s = getWordFromPostgresql(...)
out.write(s)
в том же JSP, и он показывает ОК.
Любой намек?
Спасибо Никола
Спасибо за ваш ответ, однако эта директива уже есть на странице, но она не работает (на самом деле она «работает», но только для строк, которые я получаю из базы данных). Я думаю, что есть что-то о чтении из файлов, но я не могу понять ... они работают в "Java", но не в "JSP" (не могу придумать лучшего объяснения ...)
Вот базовый пример, извлеченный из фактического кода: метод для чтения из файлов возвращает Map, от Mark (объекта, представляющего позицию в тексте) до String (содержащего текст):
это на странице .jsp (с указанием utf в приведенных выше постах)
// ...
Map<Mark, String> map = TestoMarkParser.parseMarks(...);
out.write(map.get(m));
и вот результат:
"Fu però così in uso il Genere Enharmonico, che quelli quali vi si esercitavano",
если я помещу тот же код в Java-класс и заменим out.write на System.out.println, результат будет следующим:
"Fu però così in uso il Genere Enharmonico, che quelli quali vi si esercitavano",
Я провел некоторый анализ с помощью шестнадцатеричного редактора, вот он:
оригинальная строка: "fu però così"
в XML-файле: C3 B2
в соответствии с out.write () в файле JSP: E2 88 9A E2 89 A4
ò как записано в файл через:
FileWriter w = new FileWriter(new File("out.txt"));
w.write(s); // s is the parsed string
w.close();
C3 B2
печать значений каждого символа в виде целого
0: 70 = F
1: 117 = u
2: 32 =
3: 112 = p
4: 101 = e
5: 114 = r
6: 8730 = �
7: 8804 = �
8: 32 =
9: 99 = c
10: 111 = o
11: 115 = s
12: 8730 = �
13: 168 = �
14: 10 = `