天空是蓝色的

做好软件为中国 #gcc -c helloworld.c -o helloworld.o //编译目标文件 #gcc helloworld.o -o helloworld //编译成可执行exe #helloworld //运行exe
数据加载中……
用java SDK/bin目录下的native2ascii.exe把.properties文件中的中文转换成unicode字符,实现国际化
需要用到java SDK\\bin 目录下的native2ascii.exe程序,把你写的文本文件转成unicode字符即可,例: native2ascii 源文件名.txt 新文件名.txt

测试 ResourceBundleTest.java
import java.util.Locale;
import java.util.ResourceBundle;

public class ResourceBundleTest {
    
public static void main(String args[]) {
        ResourceBundle rb 
= ResourceBundle.getBundle("LocalStrings", Locale.CHINA);
        
//LocalStrings 为peoperties文件的文件名称
        String title = rb.getString("helloworld.title");
        System.out.println(title);
    }

}

LocalStrings_zh.properties
# This locale is zh_CN
helloworld.title
=你好啊~~
输出乱码~~
用native2ascii.exe把中文格式化
# This locale is zh_CN
helloworld.title
=\u4f60\u597d\u554a~~

输出:
你好啊~~

在Servlet中的例子应用,Tomcat下的例子,根据request不同选择响应的语言也不相同~~
/*
* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     
http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/* $Id: HelloWorldExample.java,v 1.3 2004/03/18 16:40:33 jfarcand Exp $
 *
 
*/


import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

/**
 * The simplest possible servlet.
 *
 * 
@author James Duncan Davidson
 
*/


public class HelloWorldExample extends HttpServlet {


    
public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        
throws IOException, ServletException
    
{
        ResourceBundle rb 
=
            ResourceBundle.getBundle(
"LocalStrings",request.getLocale());
        response.setContentType(
"text/html");
        PrintWriter out 
= response.getWriter();

        out.println(
"<html>");
        out.println(
"<head>");

        String title 
= rb.getString("helloworld.title");

        out.println(
"<title>" + title + "</title>");
        out.println(
"</head>");
        out.println(
"<body bgcolor=\"white\">");

    
// note that all links are created to be relative. this
    
// ensures that we can move the web application that this
    
// servlet belongs to to a different place in the url
    
// tree and not have any harmful side effects.

        
// XXX
        
// making these absolute till we work out the
        
// addition of a PathInfo issue

        out.println(
"<a href=\"../helloworld.html\">");
        out.println(
"<img src=\"../images/code.gif\" height=24 " +
                    
"width=24 align=right border=0 alt=\"view code\"></a>");
        out.println(
"<a href=\"../index.html\">");
        out.println(
"<img src=\"../images/return.gif\" height=24 " +
                    
"width=24 align=right border=0 alt=\"return\"></a>");
        out.println(
"<h1>" + title + "</h1>");
        out.println(
"</body>");
        out.println(
"</html>");
    }

}



posted on 2005-11-24 15:46 bluesky 阅读(13996) 评论(8)  编辑  收藏 所属分类: 工作总结

评论

# re: 用java SDK/bin目录下的native2ascii.exe把.peoperties文件中的中文转换成unicode字符,实现国际化 2005-11-24 16:46 小明

为什么一定要用native2ascii转换一下呢,修改起来也麻烦

我看了一下jdk的src

发现读取配置文件总是使用这样的方法
BufferedReader in = new BufferedReader(new InputStreamReader(inStream, "8859_1"));

不知道jdk为什么要强制以8859_1来读取,所以得到以后要转化回来
String title = rb.getString("helloworld.title");
System.out.println(new String(title,"8859_1")));

这样就对了。
  回复  更多评论    

# re: 用java SDK/bin目录下的native2ascii.exe把.peoperties文件中的中文转换成unicode字符,实现国际化 2005-11-24 16:47 小明

刚刚打错了,应该是
System.out.println(new String(title.getBytes("8859_1")));
  回复  更多评论    

# re: 用java SDK/bin目录下的native2ascii.exe把.peoperties文件中的中文转换成unicode字符,实现国际化 2005-12-26 11:03 bluesky

今天终于用上了这个类,发现LocalStrings.peoperties和LocalStrings_zh.peoperties必须放在class根目录下,不能放到类package中,
否则提示

java.util.MissingResourceException: Can't find bundle for base name LocalStrings, locale zh_CN
  回复  更多评论    

# re: 用java SDK/bin目录下的native2ascii.exe把.peoperties文件中的中文转换成unicode字符,实现国际化 2006-01-16 09:35 剑事

peoperties写错了
  回复  更多评论    

# re: 用java SDK/bin目录下的native2ascii.exe把.peoperties文件中的中文转换成unicode字符,实现国际化 2006-01-16 14:43 bluesky

谢谢,我已改正之!
  回复  更多评论    

# re: 用java SDK/bin目录下的native2ascii.exe把.properties文件中的中文转换成unicode字符,实现国际化 2006-03-07 14:36 devel

利用一下ant里边的转码功能。
  回复  更多评论    

# re: 用java SDK/bin目录下的native2ascii.exe把.properties文件中的中文转换成unicode字符,实现国际化 2009-04-30 15:00 创意产品

mark
  回复  更多评论    

# re: 用java SDK/bin目录下的native2ascii.exe把.properties文件中的中文转换成unicode字符,实现国际化 2011-12-04 21:23 12

怎么在native2ascii.exe的命令行输入中文进行转码?我的只能输入中文,这是为什么啊?
  回复  更多评论    

只有注册用户登录后才能发表评论。


网站导航: