我正在尝试编写一个希腊词汇测验程序。问题是我无法正确解释输入字符。下面是我整理的一些示例代码来演示该问题。(如果您不想为您的机器设置希腊语输入的麻烦,当程序要求输入单词时,您可以复制并粘贴希腊语字符串。如果它很重要,我正在运行它64 位 Win7 上的 Eclipse。)
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class GreekKeyboardExample {
public static void main(String[] args) {
String word = "αβγδεζηθικλμνξοπρσςτυφχψω";
System.out.println("\n\n" + word + "\n");
String answer = getInput("Type the word above: ");
System.out.println("\nThis is what the computer took from the keyboard:");
printCharsAndCode(answer);
System.out.println("\nThis is what it should look like:");
printCharsAndCode(word);
}
private static String getInput(String prompt) {
System.out.print(prompt);
System.out.flush();
try {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in, "UTF8"));
return in.readLine();
}
catch (Exception e) {
return "Error: " + e.getMessage();
}
}
/* prints the character and its (unicode) code */
public static void printCharsAndCode(String str) {
// int len = str.length();
char[] c = str.toCharArray();
System.out.println(str);
for (char d : c) {
System.out.print(" " + d + " ");
if (Character.getType(d) == 6) System.out.print(" "); //extra space to make combining diacritics display rightly (NON_SPACING_MARK)
}
System.out.println();
for (char d : c) {
int ic = (int) d;
System.out.printf("%1$#05x ", (int) d);
}
System.out.println();
}
}
这是输出:
αβγδεζηθικλμνξοπρσςτυφχψω 输入上面的单词:αβγδεζηθικλμνξοπρσςτυφχψω 这是计算机从键盘获取的内容: αβγδεζηθικλμνξοπÏ�σÏ,τυφχψω Î ± Î ² Î ³ Î ´ Î µ Î ¶ Î · Î ¸ Î ¹ Î º Î » Î ¼ Î ½ Î ¾ Î ¿ Ï € Ï � Ï ƒ Ï ‚ Ï „ Ï … Ï † Ï ‡ Ï ^ Ï ‰ 0x0ce 0x0b1 0x0ce 0x0b2 0x0ce 0x0b3 0x0ce 0x0b4 0x0ce 0x0b5 0x0ce 0x0b6 0x0ce 0x0b7 0x0ce 0x0b8 0x0ce 0x0b9 0x0ce 0x0ba 0x0ce 0x0bb 0x0ce 0x0bc 0x0ce 0x0bd 0x0ce 0x0be 0x0ce 0x0bf 0x0cf 0x20ac 0x0cf 0xfffd 0x0cf 0x192 0x0cf 0x201a 0x0cf 0x201e 0x0cf 0x2026 0x0cf 0x2020 0x0cf 0x2021 0x0cf 0x2c6 0x0cf 0x2030 这应该是这样的: αβγδεζηθικλμνξοπρσςτυφχψω α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ ς τ υ φ χ ψ ω 0x3b1 0x3b2 0x3b3 0x3b4 0x3b5 0x3b6 0x3b7 0x3b8 0x3b9 0x3ba 0x3bb 0x3bc 0x3bd 0x3be 0x3bf 0x3c0 0x3c1 0x3c3 0x3c2 0x3c4 0x3c79033x
谁能告诉我如何解决这个问题?