从过去5个小时开始,我一直在处理与法国人有关的问题。
实际问题是,一些法语字符存储在数据库(oracle)中,而m试图读取它们并输出到word文件。
令人惊讶的是,所有法国人都认可的字符显示为“?”。最初我认为这将是编码格式的问题,并试图解决它。但是,我无法理解。
我正在运行我的应用程序的java版本是1.4,带有tomcat 5.我缩小了我的问题并考虑在控制台上打印正常的法语字符,令我惊讶的是它们被打印为??。冲浪了大约2个小时后,我对java使用的编码和默认字符集有所了解。有趣的是,我发现谷歌上的两种方法可以适合我的灵魂。但是当我尝试它们时,它们没有用,它们仍在打印?在控制台上。能否请你澄清一下,或者给我解决方案,或者哪里出错了。
以下是我尝试过的代码段。
public static void test() {
System.out.println("in test");
PrintStream ps = null;
String javaString =
"caractères français : à é \u00e9"; // Unicode for "é"
try {
ps = new PrintStream(System.out, true, "Cp850");
} catch (UnsupportedEncodingException error) {
System.err.println(error);
System.exit(0);
}
ps.println(javaString);
}
第二个是:
public static void main(String args[]){
String javaString =
"caractères français : à é \u00e9"; // Unicode for "é"
try {
// output to the console
Writer w =
new BufferedWriter
(new OutputStreamWriter(System.out, "Cp850"));
w.write(javaString);
w.flush();
test();
w.close();
test();
}
catch (Exception e) {
e.printStackTrace();
}
}