1.怎样理解struts中<bean:message key="..."/>出现的乱码问题?
2.为什么出现乱码?
3.期间编码是如何转换的?
4.eclipse保存文件的时候是按照什么编码保存的?
5.能不能让浏览器直接显示utf-8编码的文件?
6.既然utf-8能包含中文为什么不直接让utf-8来显示中文?
谢谢

解决方案 »

  1.   

    老兄你也太省文字了吧?
    1. 用java带的那个转换工具将资源文件里的字符转换成unicode,这里的unicode也仅仅是将字符重新用\uxxxx的形式表示,并不是用unicode编码来保存的!
    2. java只支持unicode
    3. 看1
    4. 有设置的,自己找吧
    5. 浏览器本身就支持
    6. utf-8可以显示中文,对于1的问题,仅仅是给java虚拟机用的。
      

  2.   

    资源文件中不能直接输入中文,这样在页面上就会出现乱码
    你先转成utf-8才可以(native2ascii -encoding utf-8 ApplicationResources.properties ApplicationResources.properties)
      

  3.   

    对,资源文件必须先转换!
    你可以在cmd下到某个目录(如c:/app)然后native2ascii -encoding utf-8 a.properties b.properties,得到的b.properties中的内容welcome=\u6b22\u8fce\u4f7f\u7528\u4e2d\u56fd\u7535\u4fe1\u865a\u62df\u4f20\u771f\u4e1a\u52a1;
    <bean:message key="..."/>就可以正确显示了.
      

  4.   

    20分问这么多问题,回答一个吧.
    主要问题是把资源文件jdk带的native2ascii工具转换成utf编码格式
    楼上的有点问题 应该是
    native2ascii -encoding GBK  temp.properties application.properties
      

  5.   

    分不在多,有诚意就行
    我今天又重新好好写了一遍,各位老兄帮忙看看吧
    我在eclipse中写了下面这个程序:
    =====================================================
    package fenzten;
    import java.io.UnsupportedEncodingException;
    public class EncodingTest {
        public static void main(String args[]){
            String str="中文";
            try {
                byte[] bt1=str.getBytes("iso8859-1");
                byte[] bt2=str.getBytes("gb2312");
                byte[] bt3=str.getBytes("utf-8");
                byte[] bt4=str.getBytes("unicode");
                System.out.println(bt1);
                System.out.println(bt2);
                System.out.println(bt3);
                System.out.println(bt4);
                System.out.println(new String(bt1,"gb2312"));
                System.out.println(new String(bt2,"gb2312"));
                System.out.println(new String(bt3,"gb2312"));
                System.out.println(new String(bt4,"gb2312"));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
    }
    ==============================================================
    程序得到的结果是:
    =====================
    [B@1a46e30
    [B@3e25a5     
    [B@19821f
    [B@addbf1
    ??
    中文
    涓????
    ??-N?e
    ======================
    我的问题是:为什么str.getBytes("iso8859-1")得到的是“[B@1a46e30”?
    有一篇文章是这样写的:
    ==============================================
    ......
    在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687"。注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示"。
    ......3.1. getBytes(charset)这是java字符串处理的一个标准函数,其作用是将字符串所表示的字符按照charset编码,并以字节方式表示。注意字符串在java内存中总是按unicode编码存储的。比如"中文",正常情况下(即没有错误的时候)存储为"4e2d 6587",如果charset为"gbk",则被编码为"d6d0 cec4",然后返回字节"d6 d0 ce c4"。如果charset为"utf8"则最后是"e4 b8 ad e6 96 87"。如果是"iso8859-1",则由于无法编码,最后返回 "3f 3f"(两个问号)。
    ==============================================
    这篇文章的链接:http://china.eceel.com/article/study_for_character_encoding_java.htm
    为什么我得到的结果是这样的?
    还有,我看到jsp中经常用到这样一段代码:
    ====================================================
    public String chStr(String str){
                    if(str==null){
                            str="";
                    }else{
                            try{
                                    str=(new String(str.getBytes("iso-8859-1"),"GB2312")).trim();
                            }catch(Exception e){
                                    e.printStackTrace(System.err);
                            }
                    }
                    return str;
                }
    ======================================================
    它这样先用getBytes("iso-8859-1"),再转成gb2312是对的,为什么我这样是错的?
    另外,我的eclipse的text file encoding设的是utf-8,把ApplicationResources.properties的text file encoding也设的是utf-8,为什么还是出来乱码?
    我用了native2ascii好像也不行,像我这种情况得怎么写这句命令?
    谢谢
      

  6.   

    native2ascii -encoding GBK temp.properties application.properties这句的意思是指把gbk编码的temp.properties转换成utf-8编码的application.properties
    还是指把utf-8编码的temp.properties转换成gbk编码的application.properties?
    被编码搞晕了.....
    我的eclipse的text file encoding设的是utf-8,把ApplicationResources.properties的text file encoding也设的是utf-8,这样的话我写的ApplicationResources.properties应该是utf-8编码的吧,如果还要转换成gbk的话何不直接把text file encoding改成gbk?
    大侠们,救命.....
      

  7.   

    <bean:message key="hello.jsp.title"/> 这个key后面的值在什么地方啊?