在Netbeans中运行时,Alt代码仅在Java字符串中起作用

时间:2016-09-28 14:12:53

标签: java csv netbeans unicode

我有一个小的java程序,它用数据读取给定的文件并将其转换为csv文件。

我一直在尝试使用箭头符号:↑,↓,→和←(Alt + 24到27)但除非程序是从Netbeans(使用F6)中运行的,否则它们将始终显示为''在生成的csv文件中。

我尝试过使用unicodes,例如" \ u2190"但没有区别。

任何人都知道为什么会这样吗?

根据要求,这是一个给出相同问题的示例代码。当使用.jar文件运行时,这不会起作用,只是创建一个包含'?'的csv文件,但是从Netbeans内部运行。

import java.io.FileNotFoundException;
import java.io.PrintWriter;


public class Sample {

String fileOutName = "testresult.csv";

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws FileNotFoundException {
    Sample test = new Sample();
    test.saveTheArrow();

}

public void saveTheArrow() {
    try (PrintWriter outputStream = new PrintWriter(fileOutName)) {
            outputStream.print("←");
            outputStream.close();
        }
        catch (FileNotFoundException e) {
        // Do nothing
    }
}
}

2 个答案:

答案 0 :(得分:1)

new PrintWriter(fileOutName)使用JVM的默认字符集 - 您可能在Netbeans和控制台中有不同的默认值。

Google Sheet根据this thread使用UTF_8,因此使用该字符集保存文件是有意义的:

Files.write(Paths.get("testresult.csv"), "←".getBytes(UTF_8));

答案 1 :(得分:0)

在编辑器中使用“< - ”字符肯定不是所需的字节0x27。

使用

outputStream.print( new String( new byte[] { 0x27}, StandardCharsets.US_ASCII);