我有一个小的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
}
}
}
答案 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);