使用StringBuilder,Java的奇怪行为

时间:2016-03-04 19:51:20

标签: java output stringbuilder

所以我一直试图打印出一些" - "字符。为什么以下不起作用?:

StringBuilder horizonRule = new StringBuilder();

for(int i = 0 ; i < 12 ; i++) {
    horizonRule.append("─");
    System.out.println(horizonRule.toString());
}

正确的输出是几行,如

─
──
───
────

等等,但错误的输出是

â??
â??â??
â??â??â??

我猜测字符串没有被println或其他东西正确解码

4 个答案:

答案 0 :(得分:3)

代码中的字符串不是连字符,而是UTF8 box drawing character

您的应用程序正在打印的终端似乎不期望任何UTF8内容,因此问题不在您的应用程序中。

将其替换为真实连字符(-)或确保显示输出的工具支持UTF8。

答案 1 :(得分:1)

你说IDE想要保存为UTF-8。然后你可能把它保存为UTF-8。

但是,您的编译器可能会以您系统使用的任何编码进行编译。

如果您将代码编写为UTF-8,请确保使用相同的编码进行编译:

javac -encoding utf8 MyClass.java

答案 2 :(得分:0)

我尝试了你的代码(我只是使用BeanShell复制&#39; n&#39;粘贴),它完美无缺。所以代码没有错。这将是你的环境。

stewart$ bsh
Picked up JAVA_TOOL_OPTIONS: -Djava.awt.headless=true -Dapple.awt.UIElement=true
BeanShell 2.0b4 - by Pat Niemeyer (pat@pat.net)
bsh % StringBuilder horizonRule = new StringBuilder();
bsh % for(int i=0; i<12; i++) {
horizonRule.append("─");
System.out.println(horizonRule.toString());
}
─
──
───
────
─────
──────
───────
────────
─────────
──────────
───────────
────────────
bsh %

答案 3 :(得分:0)

公共类myTest1 {

public static void main(String[] args) {
    StringBuilder horizonRule = new StringBuilder();
    for (int i = 0 ; i <= 13 ; i++){
        horizonRule.append('_'); 
        System.out.println(horizonRule.toString());
    }
}

}

是正确的; 也许你使用不同的编码?清晰的环境路径