开发者社区 问答 正文

jFinal i18n 获取中文乱码:报错

我的开发环境:win7 x64(英文版的,但是把system locale设为中文PRC了)

[用的是Groovy,所以public什么的就省了]

// Controller 
void i18n2() {
    String s = I18N.getText("language", Locale.CHINA);
    log.info(s);
    //试过第二个参数为UTF8, GBK都正常
    Prop p = new Prop("messages_zh_CN.properties"); 
    String t = p.get("language");
    log.info(t);
    renderText("你好");
}

I18N在Locale=CHINA的时候读取的就是 messages_zh_CN.properties,理论上String s == t,但是实际上s却是显示乱码

2015-01-22 22:22:08 [org.apache.log4j.Category$info.call()]: ÓïÑÔ

2015-01-22 22:22:08 [org.apache.log4j.Category$info.call()]: 语言

2015-01-22 22:22:08 [com.jfinal.log.Log4jLogger$info.call()]: 你好

是不是I18N和Prop在读取文件的时候采用的默认encoding不一样? 但是我试了把properties保存成不同的encoding,效果都是一样的。

在此谢谢大家!


展开
收起
kun坤 2020-06-06 22:17:10 1008 分享 版权
1 条回答
写回答
取消 提交回答
  •     I18N 与 Prop 是两个不同的组件,不建议结合起来使用, Prop 默认使用 utf-8 编码, I18N 读取的 Properties 文件需要用特殊的属性文件插件去编辑保存: http://www.oschina.net/p/properties+editor

    ######

    好的,谢谢你的耐心解答啊!@jFinal
    =)

    ######

    后来在Intellij中这么设置后就可以用了!

    2020-06-06 22:17:16
    赞同 展开评论
问答分类:
问答标签:
问答地址: