我是法国人,所以我在代码中添加了一些éèêô。 (我不会很好地说英语)。
我在类Formulaires
中有类似的方法:
public static Formulaire exposé()
在config spring xml文件中,我尝试:
<entry
key="intro"
value="#{T(com.myproject.Formulaires).exposé()}"/>
但是春天说:
Caused by: java.lang.IllegalStateException: Cannot handle (233) 'é'
at org.springframework.expression.spel.standard.Tokenizer.process(Tokenizer.java:193)
at org.springframework.expression.spel.standard.Tokenizer.<init>(Tokenizer.java:47)
at org.springframework.expression.spel.standard.InternalSpelExpressionParser.doParseExpression(InternalSpelExpressionParser.java:110)
at org.springframework.expression.spel.standard.SpelExpressionParser.doParseExpression(SpelExpressionParser.java:56)
at org.springframework.expression.spel.standard.SpelExpressionParser.doParseExpression(SpelExpressionParser.java:1)
at org.springframework.expression.common.TemplateAwareExpressionParser.parseExpressions(TemplateAwareExpressionParser.java:128)
at org.springframework.expression.common.TemplateAwareExpressionParser.parseTemplate(TemplateAwareExpressionParser.java:74)
at org.springframework.expression.common.TemplateAwareExpressionParser.parseExpression(TemplateAwareExpressionParser.java:64)
at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:119)
... 47 more
如果我把e而不是é一切都很好。
是否有关于重音的SpEL限制?
我使用spring 3.0.5。
感谢。
答案 0 :(得分:3)
基本的UTF-8字符编码中不存在重音字符,Spring XML文件可能使用它。正如错误所说,解析器无法处理重音字符。
你无法轻易解决这个问题。重音字符也会在编程的其他方面产生问题。我认为最好不要使用它们。
答案 1 :(得分:0)
这里还有更多内容。 Tokenizer中的以下代码决定它是否是字母字符
private boolean isAlphabetic(char ch) {
if (ch>255) {
return false;
}
return (flags[ch] & IS_ALPHA)!=0;
}
你的角色é是&lt; = 255但是标志[ch]是由下面的静态块初始化的
static {
for (int ch='0';ch<='9';ch++) {
flags[ch]|=IS_DIGIT | IS_HEXDIGIT;
}
for (int ch='A';ch<='F';ch++) {
flags[ch]|= IS_HEXDIGIT;
}
for (int ch='a';ch<='f';ch++) {
flags[ch]|= IS_HEXDIGIT;
}
for (int ch='A';ch<='Z';ch++) {
flags[ch]|= IS_ALPHA;
}
for (int ch='a';ch<='z';ch++) {
flags[ch]|= IS_ALPHA;
}
因此只能考虑a-z或A-Z ..