日语从扫描仪/控制台读取的字符和字符串

时间:2014-05-13 00:57:29

标签: java unicode console

我想知道我是否可以打印出带有日文字符的字符串。我停止了一个小型项目,起初是在我的联盟之外。但随着我对高级语言的技能和好奇心的提高,我偶然发现了我的旧项目。但即使编码中断,我仍然想知道是否可能。这不是我的项目(事实上,如果给出的例子不适用于编程,我会因为单纯的尝试而感到愚蠢。)

public static void main(String[] args) {
    // TODO code application logic here
    //Example:
    System.out.println("Input English String Here... ");
    Scanner english = new Scanner(System.in);
    String English = english.next();
    System.out.println("今、漢字に入ります。 ");
    Scanner japanese = new Scanner(System.in);
    String Japanese = japanese.next();
    System.out.println("Did it work...? ");
    System.out.println(English);
    System.out.println(Japanese);
}

运行:

Input English String Here...
Good
今、漢字に入ります。
いい
Did it work...? 
Good
??

我希望在输出的最后一行看到いい

3 个答案:

答案 0 :(得分:3)

获取??而不是いい的最可能解释是,计算机输入系统提供的字符编码与默认Java字符不匹配由JVM确定的编码。

假设输入是UTF-8编码,那么配置扫描仪的更可靠方式是new Scanner(System.in, "UTF-8")

另请注意,无需创建多个扫描仪对象。你可以...而且应该......创建一个并重用它。如果输入是真正的交互式可能无关紧要,但是如果输入可以通过管道连接到程序,你会发现第一个Scanner吞噬输入应该转到第二个{{1 }}

答案 1 :(得分:2)

如果您使用的是eclipse,则可以更改run->run configurations -> common下的默认字符编码。

最好使用Scanner(System.in,StandardCharsets.UTF_8.displayName())而不是硬编码字符串值。

以下是关于更改网络bean的默认编码的另一主题的链接: How to change file encoding in NetBeans?

答案 2 :(得分:-1)

对字体中的日语的支持是不稳定的,并且AWT和Swing组件之间有所不同。 那些有趣的blob可能意味着你正在使用没有的字体/组件组合 有日本字形。

另一种可能性是如果你一直在操纵字符串的字符, 通过传递它们通过字节数组或整数,很容易意外丢失 高阶位。由于这种危险,有几个弃用的API。