我正在尝试从具有英文和中文键的属性文件中读取希腊语中的值。我的代码是这样的:
public class I18NSample {
static public void main(String[] args) {
String language;
String country;
if (args.length != 2) {
language = new String("el");
country = new String("GR");
} else {
language = new String(args[0]);
country = new String(args[1]);
}
Locale currentLocale;
ResourceBundle messages;
currentLocale = new Locale(language, country);
messages =
ResourceBundle.getBundle("MessagesBundle",currentLocale, new CustomClassLoader("E:\\properties"));
System.out.println(messages.getString("greetings"));
System.out.println(messages.getString("inquiry"));
System.out.println(messages.getString("farewell"));
}
}
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
public class CustomClassLoader extends ClassLoader {
private String path;
public CustomClassLoader(String path) {
super();
this.path = path;
}
@Override
protected URL findResource(String name) {
File f = new File(path + File.separator + name);
try {
return f.toURL();
} catch (MalformedURLException e) {
e.printStackTrace();
}
return super.findResource(name);
}
}
MessagesBundle_el_GR.properties 问候=ρήμ。 χαιρετώ 告别=επιφ。 αντίο
我正在编译像这样的javac -encoding UTF8 CustomClassLoader.java javac -encoding UTF8 I18Sample.java
当我运行这个时,我得到乱码输出。如果本地文件是英语,法语或德语,它工作正常。 请帮忙。 问候, Subhendu
答案 0 :(得分:0)
根据the documentation,属性文件似乎仅限于ISO 8859-1。但它们确实支持Unicode转义,链接文档有一个工具可以自动生成所述转义。
XML加载器允许使用UTF-8编码的XML。
javac
选项仅适用于.java
文件中的字符串文字,并且不对程序的运行时行为执行任何操作。
答案 1 :(得分:0)
感谢theatrus。
我试图直接读取属性文件,如下所示:
FileInputStream fis = new FileInputStream("E:\\properties\\MessagesBundle_el_GR.properties");
DataInputStream dis = new DataInputStream(fis);
BufferedReader br = new BufferedReader(new InputStreamReader(dis, "ISO-8859-7"));
String strLine;
while((strLine = br.readLine()) != null){
System.out.println(strLine);
}
dis.close();
没有用。
我们可以将相同的信息放在数据库和数据库中。从那里读取。尽管在安装了mysql数据库的机器的终端中,当我们尝试从java代码中读取相同内容时,我们正确地以希腊文显示消息。它将变为乱码。将使用javac -encoding UTF8来帮助阅读数据库中的消息?
native2ascii工具不会有太大帮助,因为我们系统的用户不会同意承担所有的痛苦。用户已准备好使用数据库(因为我们将提供用于输入数据库的GUI)或属性文件。
此致
Subhendu