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

在Netbeans中运行时,Alt代码仅在Java字符串中工作,java,csv,netbeans,unicode,Java,Csv,Netbeans,Unicode,我有一个小的java程序,它读取一个包含数据的给定文件,并将其转换为csv文件 我一直在尝试使用箭头符号:↑, ↓, → 及← (Alt+24到27),但除非程序是从Netbeans内部运行的(使用F6),否则它们在生成的csv文件中始终显示为“?” 我尝试过使用unicodes,例如“\u2190”,但没有任何区别 有人知道为什么会这样吗 根据要求,下面是一个给出相同问题的示例代码。当使用.jar文件运行时,这不起作用,只创建一个包含“?”的csv文件,但是在Netbeans中运行是可行的 i

我有一个小的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
    }
}
}
new PrintWriter(fileOutName)
使用JVM的默认字符集-在Netbeans和控制台中可能有不同的默认值

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

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

使用“可能是一个编码问题,但没有看到代码将很难帮助…请查看如何创建”。@assylias我添加了一个示例来重新创建该问题。您使用的Java版本是什么?不确定这是否是您的意思,但Netbeans使用的是jdk1.8.0_74
new PrintWriter(string)
使用默认字符集,在Netbeans和控制台中可能不同。您是否尝试指定字符集,例如:
Files.write(path.get(“testresult.csv”),”←“.getBytes(UTF_8));
?如何打开csv?(在窗口中,它可以用记事本打开,但不能用写字板打开)。
outputStream.print( new String( new byte[] { 0x27}, StandardCharsets.US_ASCII);