从Java程序,可移植的方式来编写带重音的字符串

时间:2013-04-12 10:45:57

标签: java windows internationalization portability non-ascii-characters

喂,

我有一个Java程序,带有命令行界面。它用于Linux和Windows。 Java代码是可移植的,我希望它保持可移植性。

我的Java源文件是Unicode格式 - 这很好。在他们中,我有这样的行:

System.err.println("Paramètre manquant. … ");

我使用Eclipse将打包程序作为JAR存档。

然后,程序由以下命令运行:

java -jar MyProgram.jar parameters

在Windows XP命令行中,这会给出:

ParamÞtre manquant. … 

是否有一种可移植的方式在Java程序中使用重音编写字符串,以便它们在Windows命令行中正确显示?或者我们只需要与Windows一起使用愚蠢地替换重音E与冰岛刺?

我使用Java 6.

3 个答案:

答案 0 :(得分:5)

在Java 1.6中,您可以使用System.console()代替System.out.println()来向控制台显示突出显示的字符。

public class Test2 {
  public static void main(String args[]){
   String s = "caractères français :  à é \u00e9"; // Unicode for "é"
   System.out.println(s);
   System.console().writer().println(s);
  }
}

,输出

C:\temp>java Test
caractþres franþais :  Ó Ú Ú
caractères français :  à é é

另见Output accentuated characters to the console

答案 1 :(得分:3)

使用unicode转义序列:\u00E8

System.err.println("Param\u00E8tre manquant. … ");

Here's一个有用的Unicode字符表。

答案 2 :(得分:1)

在编码unicode字符时尝试使用\u<XXXX>。它在代码中看起来不太漂亮,但它可以工作并且可以移植。

例如:

String specialCharacters= "\u00E1 \u00E9 \u00ED \u00F3 \u00FA";
System.out.println(specialCharacters); // This will print á é í ó ú

检查Alepac的unicode字符表的答案。