secuencia - imprimir caracteres especiales en java
No puedo entender por qué DrJava no generará símbolos Unicode (3)
Me gustaría pedir disculpas de antemano por mi increíble newb-ness con respecto a Java y la programación en general. Pero he buscado en todas partes una respuesta a esto y parece que no puedo encontrar ninguna.
Así que simplemente intento ejecutar lo siguiente:
public class WriteSquares2
{
public static void main(String[] args)
{
for (int i=1; i<=10; i++)
{
System.out.println(i + " /u2261 " + (i % 7) + " modulo 7");
}
}
}
El carácter Unicode / u2261 es el signo de congruencia (≡). DrJava muestra lo siguiente como salida:
1 ? 1 modulo 7
2 ? 2 modulo 7
3 ? 3 modulo 7
4 ? 4 modulo 7
5 ? 5 modulo 7
6 ? 6 modulo 7
7 ? 0 modulo 7
8 ? 1 modulo 7
9 ? 2 modulo 7
10 ? 3 modulo 7
Lo más extraño de esto es que cuando simplemente escribo
''/u2261''
en el cuadro Interacciones, obtengo el carácter de equivalencia en comillas simples:
''≡''
He intentado simplemente poner ''/ u2261'' en el código en lugar de "/ u2261", pero luego obtengo cosas como esta:
8803 modulo 7
8805 modulo 7
8807 modulo 7
También intenté simplemente insertar el carácter Unicode en el código, pero eso solo dio un mensaje de error. ¿Alguien puede descubrir qué está pasando o qué estoy haciendo mal? Su ayuda es muy apreciada.
[Debo agregar que esta no es una tarea para la tarea ni nada, ya que nuestro libro apenas menciona Unicode, simplemente tratando de resolver esto ... y cuando comencé, ¡no pensé que sería tan difícil!]
EDITAR: Estoy usando Mac OS 10.7.5 y el Dr. Java dice que su compilación es "drjava-20120818-r5686".
EDIT # 2: Aquí hay una captura de pantalla usando Monospaced 12 como mi fuente principal. Todavía aparece como signos de interrogación, aunque puedo hacer que la consola me devuelva el símbolo si lo escribo directamente, pero con comillas simples.
¿Ha cambiado su mensaje de salida a unicode. (Tenga en cuenta que Java por defecto en el mundo de habla inglesa es IS0-8859-1).
El problema tiene que ver con la fuente que estás usando, no es un problema con tu código. Consulte la configuración de DrJava en Edit > Preferences > Display Options > Fonts > Main Font
.
DrJava usa la fuente predeterminada (Monospaced 12) en Linux:
DrJava usando una fuente diferente (PT Sans 12) en Linux:
Ambas capturas de pantalla son de la misma instancia de DrJava; Ni siquiera tuve que cerrarlo. Tenga en cuenta que en el panel de Interacciones, el glifo es correcto para mi fuente Monospaced y es un marcador de posición genérico para PT Sans. Lo mismo ocurre en la pestaña Consola (no se muestra).
Hice un poco de investigación, y encontré una solución que se encontró antes de otra pregunta here
Entonces, en este caso, podría ser algo similar. No es realmente su código, sino la forma en que DrJava maneja unicode dependiendo de su sistema.
"La codificación de caracteres depende del sistema. Según su caja, puede imprimir los 16 bits de la codificación UTF-16 (que es 9794), los 8 bits altos (que serían 38) o, como en su caso, el bajo 8 bits (que es 66).
9794 / 256 = 38
9794 % 256 = 66
"