Vscode, problemas con los carácteres españoles.

spymv

Hola, suelo usar Jetbrains para todo, pero me ha dado por probar Vscode. Y aunque no creo que lo siga usando, hay un problema que he tenido con este programa que me jode el TOC no poder solucionar. Parece ser que los inputs no cogen bien los carácteres españoles, no se guardan en la variable y por lo tanto después no lo muestra. Solo es con la entrada por teclado, pues si la variable la iniciamos en el código si que funciona.

Eclipse, android studio, intellij va como toca, en las opciones de Vscode todo está en UTF-8. ¿Qué está pasando? ¿Es problema mío, del software? :(
No es importante, es una chorrada pues seguiré con Intellij, pero me gustaría saber el por qué. Necesito vuestra sabiduría.

Os dejo un código para copiar/pegar rápido y reproducir lo que me pasa.

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner scan;
        scan = new Scanner(System.in);
        System.out.println("Introduce una cadena");
        String string = scan.nextLine();
        String string2 = "ñÑ";
        scan.close();
        
System.out.printf("string1: %s", string); System.out.println(); System.out.printf("string2: %s", string2); } }
D10X

La codificación de la consola y de vscode no es la misma. Por eso te funcionan las ñ si están dentro del fichero, y no si son parámetros de entrada por consola.

scan = new Scanner (System.in, "ISO-8859-1");

Es mas, aunque te funcione en Windows, puede fallar en Ubuntu, o en otro S.O. por el encoding ... Lo mejor es evitar los caracteres especiales, y si los necesitas, incluir específicamente el encoding y documentar q la entrada debe ser de ese encoding.

P.D: Trabajar con encodings es una puta mierda, y como un fichero con caracteres especiales viaje por varios sistemas, puede ser la risa leer el fichero.

1 respuesta
spymv

#2 Gracias por la respuesta, pero no funciona. He probado todo ese tipo de cosas. Supuestamente la codificación debe ser la misma ya que Vscode lanza un .bat para lanzar la consola en modo UTF-8. De echo ejecuto chcp en consola me dice que lo tengo en 65001 que viene a ser el UTF-8.

En fin, paso. Desinstalar y seguir con jetbrains.

1 respuesta
r2d2rigo

#3 tu problema no es VSCode, es el Scanner de Java. Pero tu veras.

1 respuesta
spymv

#4 Siendo así, ¿por qué funciona correctamente en todos los demás IDE usando la misma instalación de java?

1 respuesta
r2d2rigo

#5 los demas IDEs que mencionas casualmente son todos basados en Java. Estoy segurisimo que activan alguna variable de entorno que hace que el programa funcione correctamente cuando lo ejecutas desde ahi, cosa que no ocurre cuando usas VSCode.

Para salir de dudas, prueba a ejecutarlo a mano desde una ventana de comandos.

1 respuesta
spymv

#6 Pues en cmd tampoco recoge la 'ñ', tienes razón. Aunque no sé como arreglarlo, he probado varios encodings para el Scanner y ninguno lo recoge.

1 respuesta
eondev

#7 y con un buffered reader?

Usuarios habituales

  • eondev
  • spymv
  • r2d2rigo
  • D10X