java jsp编译错误
我在一个开源项目的jsp
页面中有以下行:
<html:option value="micg">µg</html:option>
当我使用maven
编译它时,会生成以下代码:
_jspx_th_html_005foption_005f9.setValue("micg");
int _jspx_eval_html_005foption_005f9 = _jspx_th_html_005foption_005f9.doStartTag();
if (_jspx_eval_html_005foption_005f9 != javax.servlet.jsp.tagext.Tag.SKIP_BODY) {
if (_jspx_eval_html_005foption_005f9 != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {
out = _jspx_page_context.pushBody();
_jspx_th_html_005foption_005f9.setBodyContent((javax.servlet.jsp.tagext.BodyContent) out);
_jspx_th_html_005foption_005f9.doInitBody();
}
do {
out.write('Â');
out.write('µ');
out.write('g');
int evalDoAfterBody = _jspx_th_html_005foption_005f9.doAfterBody();
if (evalDoAfterBody != javax.servlet.jsp.tagext.BodyTag.EVAL_BODY_AGAIN)
break;
} while (true);
if (_jspx_eval_html_005foption_005f9 != javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {
out = _jspx_page_context.popBody();
}
}
这导致编译生成的java
文件时出现以下错误:
[javac] Compiling 1375 source files
[javac] warning: [options] bootstrap class path not set in conjunction
with -source 1.5
[javac] D:\src\WriteScript_jsp.java:2310: error: unclosed character literal
[javac] out.write('Â');
[javac] ^
[javac] D:\src\WriteScript_jsp.java:2310: error: illegal character: \8218
[javac] out.write('Â');
[javac] ^
[javac] D:\src\WriteScript_jsp.java:2310: error: unclosed character literal
[javac] out.write('Â');
[javac] ^
[javac] D:\src\WriteScript_jsp.java:2311: error: unclosed character literal
[javac] out.write('µ');
[javac] ^
[javac] D:\src\WriteScript_jsp.java:2311: error: ';' expected
[javac] out.write('µ');
[javac] ^
[javac] D:\src\WriteScript_jsp.java:2311: error: unclosed character literal
[javac] out.write('µ');
[javac] ^
[javac] 6 errors
请帮助我如何删除此错误:(我使用的是Windows 7 64位和JDK 1.7版
# 1 楼答案
生成的Java源代码中存在
Â
表示您已将JSP源代码保存为ISO-8859-x而不是UTF-8(或者JSP解析器将其读取为ISO-8859-x而不是UTF-8,这是不太可能的)。检查/重新配置源代码编辑器,确保它将JSP源代码保存为UTF-8# 2 楼答案
按照其他响应者的建议,确保
-encoding
到处都正确的另一种方法是不要在文件中使用非低位ASCII字符。这可以通过\u
转义完成,例如,通过编写:。。而不是:
远没有这么漂亮或方便,但在大型团队中工作要容易得多,尤其是当你的应用程序中有限的位置上只有可怕的外语字符时,就像大多数处理这类事情的开发团队所做的那样