и все будет хорошо.

рудно понять, как справиться с этой проблемой:

Я разрабатываю веб-инструмент для итальянского университета, и мне приходится отображать слова с ударением (например, è, ù, ...); иногда я получаю эти слова из таблицы 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, и он показывает ОК.

Любой намек?

Спасибо Никола

@krosenvold

Спасибо за ваш ответ, однако эта директива уже есть на странице, но она не работает (на самом деле она «работает», но только для строк, которые я получаю из базы данных). Я думаю, что есть что-то о чтении из файлов, но я не могу понять ... они работают в "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 = `

Ответы на вопрос(4)

Ваш ответ на вопрос