“.bat”文件未打印.txt文件的重音

时间:2017-11-05 12:53:50

标签: java windows eclipse batch-file cmd

我正在使用.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 ?  先感谢您。 ^^

1 个答案:

答案 0 :(得分:1)

我不知道您是否通过此邮件通知了我,但我解决了这个问题。

我所要做的只是添加" chcp 1252"在.bat文件中,这是欧洲拉丁语代码页。默认情况下,我在Windows上使用了代码页" 850",这是多语言(拉丁语1)(我真的不知道为什么这个最后的代码页在CMD上打印重音但不在文本上档案:S)

遗憾的是,这个小问题是解决方案,因为我认为这是更难的事情。但是谢谢大家的帮助!我很感激^^

问候! :P