jsp编译错误

时间:2012-02-20 17:38:03

标签: java jsp maven

我在开源项目的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版。

2 个答案:

答案 0 :(得分:2)

生成的Java源代码中存在Â表示您已将JSP源代码保存为ISO-8859-x而不是UTF-8(或JSP解析器将其读取为ISO-8859) -x而不是UTF-8,这是不太可能的)。检查/重新配置源代码编辑器,并确保将JSP源代码保存为UTF-8。

答案 1 :(得分:0)

根据其他响应者的建议,确保您在任何地方-encoding更正的替代方法是在文件中不使用非低位ASCII字符。这可以通过\u转义来完成,例如,通过写:

 out.write('\u006c');

..而不是:

 out.write('Â');

没有那么漂亮或方便,但更容易在大型团队中工作,特别是如果你在应用程序中的有限位置只有可怕的外国月亮语言角色,因为大多数处理这类事情的开发团队都做