ich die Ursache des Problems gefunden, und eine Lösung dafür, wie es sollte funktionieren. Wie ich bereits vermutet habe, nachdem ich meine Frage gepostet und die Antwort von Calum und Probleme mit dem Kodieren auf dem Mac mit einem anderen Projekt (das in Java war) gelesen habe, ist die Ursache des Problems die Standardkodierung von Mac OS X. Wenn du beginnst scala
Interpreter, wird die Standardcodierung für die angegebene Plattform verwendet. Unter Mac OS X ist dies Macroman, unter Windows ist es wahrscheinlich CP1252. Sie können dies überprüfen, indem Sie den folgenden Befehl in dem scala-Interpreter eingeben:
scala> System.getProperty("file.encoding");
res3: java.lang.String = MacRoman
Nach dem scala
Hilfe Test ist es möglich, Java-Eigenschaften, um die -D-Option. Dies funktioniert jedoch nicht für mich. Ich beendete die Umgebungsvariable
Einrichtung
JAVA_OPTS="-Dfile.encoding=UTF-8"
Nach scala
ausgeführt wird, das Ergebnis des vorherigen Befehls wird das folgende Ergebnis geben:
scala> System.getProperty("file.encoding")
res0: java.lang.String = UTF-8
nun Druck Sonderzeichen wie erwartet funktioniert:
print(0x20AC.toChar)
€
Also, es ist kein Fehler in Scala, aber ein Problem mit Standard-Kodierungen. Meiner Meinung nach wäre es besser, wenn standardmäßig UTF-8 auf allen Plattformen verwendet würde. Bei meiner Suche nach einer Antwort, wenn dies berücksichtigt wird, stieß ich auf eine discussion auf der Mailingliste Scala zu diesem Thema.In der ersten Nachricht wird vorgeschlagen, UTF-8 standardmäßig unter Mac OS X zu verwenden, wenn file.encoding
Macroman meldet, da UTF-8 der Standardzeichensatz unter Mac OS X ist (frage mich, warum file.encoding
standardmäßig auf Macroman gesetzt ist) Dies ist eine Vererbung von Mac OS bevor 10 veröffentlicht wurde?). Ich glaube nicht, dass dieser Vorschlag Teil von Scala 2.8 sein wird, seit Martin Odersky wrote, dass es wahrscheinlich am besten ist, die Dinge so zu halten, wie sie in Java sind (d. H. Ehre der file.encoding
Eigenschaft).
In welchem Betriebssystem laufen Sie den Interpreter? Und welche Scala-Version? –
Hinzugefügt in meinem ursprünglichen Beitrag –