ho trovato la causa del problema, e una soluzione per farlo funzionare come dovrebbe. Come già sospettavo dopo aver postato la mia domanda e aver letto la risposta di Calum e problemi con la codifica su Mac con un altro progetto (che era in Java), la causa del problema è la codifica predefinita usata da Mac OS X. Quando si avvia scala
interprete, utilizzerà la codifica predefinita per la piattaforma specificata. Su Mac OS X, questo è Macromano, su Windows è probabilmente CP1252. È possibile controllare questo digitando il seguente comando nell'interprete scala:
scala> System.getProperty("file.encoding");
res3: java.lang.String = MacRoman
Secondo il test scala
, è possibile fornire le proprietà Java utilizzando l'opzione -D. Tuttavia, questo non funziona per me. Ho finito per impostare la variabile d'ambiente
JAVA_OPTS="-Dfile.encoding=UTF-8"
Dopo aver eseguito scala
, il risultato del comando precedente darà il seguente risultato:
scala> System.getProperty("file.encoding")
res0: java.lang.String = UTF-8
Ora, la stampa di caratteri speciali funziona come previsto:
print(0x20AC.toChar)
€
Quindi, non è un bug in Scala, ma un problema con le codifiche di default. A mio parere, sarebbe meglio se per impostazione predefinita UTF-8 fosse utilizzato su tutte le piattaforme. Nella mia ricerca di una risposta se questo è considerato, mi sono imbattuto in un discussion sulla mailing list di Scala su questo problema.Nel primo messaggio, si propone di utilizzare UTF-8 di default su Mac OS X quando file.encoding
segnala Macroman, poiché UTF-8 è il set di caratteri predefinito su Mac OS X (mi chiedo perché il parametro file.encoding
per default sia impostato su Macroman, probabilmente questa è un'eredità di Mac OS prima del rilascio di 10?). Non penso che questa proposta farà parte di Scala 2.8, poiché Martin Odersky wrote è probabilmente meglio mantenere le cose come sono in Java (ad esempio, onorare la proprietà file.encoding
).
fonte
2009-12-30 11:57:51
In quale sistema operativo stai eseguendo l'interprete? E quale versione di Scala? –
Aggiunto nel mio post originale –