编码JBoss 7

4

我尝试了这个这个的所有可能答案,但对我没有起作用。现在我要写出问题。

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选项(-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后端bean控制器中的代码片段有效。


2
你尝试将它写入文件中,以检查是否可能是控制台本身的问题了吗? - Didier L
你看到输出的地方不太清楚。 - Jon Skeet
convertValue方法在哪里被调用了?是在servlet、jsp还是其他地方?你能提供一份代码示例吗? - szhem
更新问题,说明convertValue如何接收val - Mukul Goel
硬编码的整数字符串 - Rinat Tainov
我也遇到了类似的问题。 - NRaf
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;
}

1
尝试将此内容添加到您的 standalone.conf 文件中:
JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

当虚拟机的直接选项无法使用时,这对我很有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接