java中国家化的问题如何解决?
正在做一个web项目,需要用到国际化。网上搜索了些资料,我的国家化过程如下:
1:先生成Resource类import java.io.*;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Locale;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;public class Resource {    
    private static final String HEAD_FILE = "ATTR"; //属性文件名的前缀    
    private static final String LAST_FILE=".properties"; //属性文件名的后缀
    private static final String FILE_PATH="c://"; //定义属性文件存放的目录
    public Resource() {
        
    }
    
    /*以下是根据传入的属性文件中的"键",而得到与区域与语言设置相对应的"值"*/
        
    public synchronized String srcStr(String disStr) {
        String ret = "";    
        try {
            Locale locale = Locale.getDefault(); //获取系统的区域与语言默认设置
            System.out.println("locale is :"+locale.toString());
            String baseName = new StringBuffer()
           
            .append(HEAD_FILE).append("_").append(locale.toString())
            
            .append(LAST_FILE).toString(); //根据local属性,前缀以及后缀生成文件名
            
            System.out.println("baseName is:"+baseName);
            String fileName = new StringBuffer(FILE_PATH).append(baseName).toString(); //获取文件的完整路径
            
            
            
            InputStream is = new FileInputStream(fileName); //生成文件输入流
            PropertyResourceBundle pr = new PropertyResourceBundle(is); //根据输入流构造PropertyResourceBundle的实例
            ret = pr.getString(disStr);
            if(locale.equals(Locale.CHINA)){    
                ret = new String(ret.getBytes("ISO-8859-1"),"UTF-8");
            } //如果是要显示中文,则要进行内码的转换
            is.close();
            return ret;   
        }
        catch (Exception e) {
            e.printStackTrace();
            return disStr;            
        }
    }
    public static void main(String args[]){
        Resource res = new Resource();
        System.out.println("Password is:"+res.srcStr("Password"));
    }
}2:生成资源文件
LoginName=用户 Password=密码 Login=登陆 LoginTime=登陆时间 LogOff=注销登陆 ChineseVersion=中文版 MainPage=首页 SoftWare=软件 Hardware=硬件 YourLocationMainPage=当前位置:首页 MyCalendar=我的日程 MyMails=我的邮件 R&D=研发区 Forum=讨论区 DeveloperProcess=开发进程 TechnologyCommunion=技术交流 
利用native2ascii命令将其转化为utf-8编码3:在页面中使用Resource类的对象。比如:
<jsp:useBean id="resource" scope="session" class="localtest.Resource"/>
<p align=right><%=resource.srcStr("Password")%></p>可惜,我打开页面,发现是乱码,类似于问号的那样。
期间,我将资源文件用微软带的记事本打开,将资源文件的编码改为utf-8,可惜,无济于事麻烦高手解决下,谢谢拉····

解决方案 »

  1.   

    ...我的国际化问题 没有写什么代码 直接对资源文件命名。applicationResources_zh_CN.properties
    applicationResources.properties(默认)
    applicationResources_US.properties浏览器自动找
    如果你浏览器设置为美国英语,它自己就去找applicationResources_US.properties
    如果设置为简体中文,就去找applicationResources_zh_CN.properties
      

  2.   

    晕,看错了,偶用struts框架了-_-!