4

我尝试了所有可能的答案thisthis,但它对我不起作用。现在写问题。

private String convertValue(String val){
    System.out.println("convert input:" + val);
    String res = "";
    StringTokenizer st = new StringTokenizer(val,",");
    while(st.hasMoreTokens()){
        String token = st.nextToken();
        if (token.matches("([0-9]*)")) {
            char c = (char)Integer.parseInt(token);
            res+=c;
        }else{
            res+=token;
        }
    }
    System.out.println("convert output:" + res);
    return res;
}

当 jboss 7 用完时,它会给出:

convert input:61,1087,1088,1080,1074,1077,1090
convert output:=привет

通过操作在 jboss 7 中运行:

convert input:61,1087,1088,1080,1074,1077,1090
convert output:=??????

为什么它不能正常工作?

我的standalone.xml:

 <extension module="org.jboss.as.weld"/>
</extensions>

<system-properties>
    <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
    <property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
</system-properties>

添加了 java opts(-Dfile.encoding=UTF-8):

convert input:61,1087,1088,1080,1074,1077,1090
convert output:=–ø—Ä–∏–≤–µ—Ç

编辑1:我的环境:

Mac OS X Version 10.7.5
JBoss 7.1.1.Final
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-11M3720)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)

编辑2:从JSF页面按下按钮时,上面的代码片段在javax.enterprise.context.RequestScoped back bean控制器中工作。

4

2 回答 2

1

我没有 Mac,但相关 问题表明,在您的情况下,这样的代码应该可以工作:

private String convertValue(String val){
    System.out.println("convert input:" + val);
    String res = "";
    StringTokenizer st = new StringTokenizer(val,",");
    while(st.hasMoreTokens()){
        String token = st.nextToken();
        if (token.matches("([0-9]*)")) {
            char c = (char)Integer.parseInt(token);
            res+=c;
        }else{
            res+=token;
        }
    }

    PrintStream out = new PrintStream(System.out, true, "UTF-8");
    out.println("convert output:" + res);
    return res;
}
于 2012-11-14T22:36:11.430 回答
1

尝试将其添加到您的standalone.conf 中:

JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

当 vm 的直接选项不起作用时,它对我有用。

于 2012-11-13T08:18:39.953 回答