he encontrado la causa del problema y una solución para que funcione como debería. Como ya sospechaba después de publicar mi pregunta y leer la respuesta de Calum y problemas con la codificación en la Mac con otro proyecto (que estaba en Java), la causa del problema es la codificación predeterminada utilizada por Mac OS X. Cuando comienza scala
intérprete, usará la codificación predeterminada para la plataforma especificada. En Mac OS X, esta es Macroman, en Windows probablemente sea CP1252. Puede comprobar esto escribiendo el siguiente comando en el intérprete Scala:
scala> System.getProperty("file.encoding");
res3: java.lang.String = MacRoman
De acuerdo con la prueba ayuda scala
, es posible proporcionar propiedades de Java utilizando la opción -D. Sin embargo, esto no funciona para mí. Terminé establecer la variable de entorno
JAVA_OPTS="-Dfile.encoding=UTF-8"
Después de ejecutar scala
, el resultado de la orden anterior dará el siguiente resultado:
scala> System.getProperty("file.encoding")
res0: java.lang.String = UTF-8
Ahora, la impresión de caracteres especiales funciona como se esperaba:
print(0x20AC.toChar)
€
Por lo tanto, no es un error en Scala, sino un problema con las codificaciones predeterminadas. En mi opinión, sería mejor si se usara UTF-8 por defecto en todas las plataformas. En mi búsqueda de una respuesta si esto se considera, encontré un discussion en la lista de correo de Scala sobre este tema.En el primer mensaje, se propone utilizar UTF-8 de forma predeterminada en Mac OS X cuando file.encoding
informa Macroman, ya que UTF-8 es el juego de caracteres predeterminado en Mac OS X (me pregunto por qué file.encoding
por defecto está configurado en Macroman, probablemente esto es una herencia de Mac OS antes de que se lanzara el 10?). No creo que esta propuesta forme parte de Scala 2.8, ya que Martin Odersky wrote es probablemente mejor mantener las cosas como están en Java (es decir, respetar la propiedad file.encoding
).
¿En qué sistema operativo está ejecutando el intérprete? ¿Y qué versión de Scala? –
Agregado en mi publicación original –