我正在使用.bat文件来运行.jar程序。问题是,即使.bat文件读取输入(aéí/lalélí/cácécí),它也不会将它们打印到文本文件中。 ( Image: CMD console output ) 你可以在这里看到带有缺失重音的文本文件:Image: Text file with missing accents
为什么我告诉你这个?因为 Eclipse 控制台成功地PRINTS重写了该文件,但BAT文件没有这样做。我想和一些朋友分享一个节目。你可能会问:“你的蝙蝠文件有什么”?我只有这个,用于运行jar文件:
java -jar crpg.jar
显然,你会询问我的代码,我现在就发布它,但是嘿!我的代码适用于Eclipse,重音符号已成功打印在文本文件中,您可以在此处看到:Program runned in Eclipse console
package ficheros;
import java.io.*;
import java.nio.charset.*;
import java.util.Scanner;
public class QuestionCreator {
public static void main(String[] args) {
// TODO Auto-generated method stub
OutputStreamWriter preguntas = null;
PrintWriter pw = null;
try(Scanner leer = new Scanner(System.in)){
// Abrimos el fichero y creamos el BufferedReader para hacer una lectura cómoda
preguntas = new OutputStreamWriter(new FileOutputStream("preguntas.txt"), Charset.forName("UTF-8"));
pw = new PrintWriter(preguntas);
// Preguntamos qué tema quiere seleccionar el usuario
System.out.println("¿Qué tema quieres? ");
String tema = leer.nextLine();
String pregunta, respuesta, trivial;
boolean salir = false;
// Hacemos un bucle de creación de preguntas
while(!salir){
System.out.println("Si quieres cambiar tema escribe \"Cambiar tema\". Si quieres salir, escribe \"Salir\"");
System.out.println("Escribe pregunta: ");
pregunta = leer.nextLine();
if(pregunta.equals("Cambiar tema") | pregunta.equals("cambiar tema")){
// En el caso de que el usuario quiera cambiar de tema.
System.out.println("Escribe tema: ");
tema = leer.nextLine();
System.out.println("Escribe pregunta: ");
pregunta = leer.nextLine();
} else if(pregunta.equals("Salir") | pregunta.equals("salir")){
// En el caso de que el usuario quiera salir
break;
}
System.out.println("Escribe respuesta: ");
respuesta = leer.nextLine();
// Se crea la pregunta y se introduce en una nueva línea en el documento.
trivial = "{\"Category\":\"" + tema + "\",\"Question\":\"" + pregunta + "\",\"Answer\":\"" + respuesta + "\"},";
pw.println(trivial);
}
} catch(Exception e){
e.printStackTrace();
} finally{
// Cerramos el fichero
try{
// Aprovechamos el finally para
// asegurarnos de que se cierra el fichero
if(null != pw){
pw.close();
System.out.println("PROGRAMA FINALIZADO");
}
} catch(Exception e2){
e2.printStackTrace();
}
}
}
}
很抱歉,如果我的代码是西班牙语。它是为西班牙朋友制作的。但我不真的认为我的代码是问题,因为,它如何在Eclipse控制台上工作而不在.bat / .jar文件上?我想与朋友分享我的程序,但如果.bat文件没有打印文本文件的重音,那是不可能的!什么可能是问题?为什么它不能用于Eclipse ? 先感谢您。 ^^
答案 0 :(得分:1)
我不知道您是否通过此邮件通知了我,但我解决了这个问题。
我所要做的只是添加" chcp 1252"在.bat文件中,这是欧洲拉丁语代码页。默认情况下,我在Windows上使用了代码页" 850",这是多语言(拉丁语1)(我真的不知道为什么这个最后的代码页在CMD上打印重音但不在文本上档案:S)
遗憾的是,这个小问题是解决方案,因为我认为这是更难的事情。但是谢谢大家的帮助!我很感激^^
问候! :P