我很难搞清楚如何处理这个问题:
我正在为一所意大利大学开发一个网络工具,我必须显示带有重音的单词(例如è,ù,...); 有时我会从PostgreSql表(UTF8编码)中获取这些单词,但大多数情况下我必须从文件中读取长段落.这些文件编码为utf-8 xml,并在Smultron或任何utf-8编辑器中显示(它们是在python旧文件中使用实体è
而不是"è" 进行解析).
我编写了一个java类,它从xml文件中提取相关的段,其工作方式如下:
String s = parseText(filename, position)
如果我将返回的String写入文件,一切看起来都很好; 问题是,如果我这样做
out.write(s)
在jsp页面中,我得到了奇怪的字符.顺便说一句,我用
String s = getWordFromPostgresql(...)
out.write(s)
在相同的jsp中它显示OK.
任何提示?
谢谢Nicola
感谢您的回复,但该指令已经在页面中,但它不起作用(实际上它"有效",但仅适用于我从数据库中获取的字符串).我认为有一些关于从文件中读取的内容,但我无法理解......它们在"java"中工作,但在"jsp"中却没有(不能想到更好的解释......)
这是从实际代码中提取的基本示例:从文件中读取的方法返回Map,从Mark(表示文本中的位置的对象)到String(包含文本):
这是在.jsp页面中(上面的帖子中引用了utf-directive)
// ...
Map<Mark, String> map = TestoMarkParser.parseMarks(...);
out.write(map.get(m));
Run Code Online (Sandbox Code Playgroud)
这就是结果:
"Fuperòcosì"in il il Genere Enharmonico,che quelli quali vi si esercitavano,"
如果我在java类中放入相同的代码,并用System.out.println替换out.write,结果如下:
"Fuperiòcosìinuso il Genere Enharmonico,che quelli quali vi si esercitavano,"
我一直在用十六进制编辑器做一些分析,这里是:
原始字符串:"fuperòcosì"
ò在xml文件中:C3 B2
ò由jsp文件中的out.write()呈现:E2 88 9A E2 89 A4
ò写入文件通过:
FileWriter w = new FileWriter(new File("out.txt"));
w.write(s); // s is …
Run Code Online (Sandbox Code Playgroud) 我需要最简单的编辑器,支持utf-8来编辑windows中的xml文件; 像wordpad这样的东西是完美的.这是一个非程序员,编辑现有的文件(到目前为止他使用的是wordpad,但现在我用utf-8编码翻译了很多意大利口音的文件显然是不可读的).有什么建议吗?
谢谢,这真的会帮助我
问候
尼古拉