Кодировка scala по умолчанию в оболочке Windows

Вопрос новичка: я использую scala 2.11.4 на компьютере с Windows 8 в стандартной командной оболочке (кодовая страница 850). Если я наберу "Müller" в командной строке scala>"Müller" res0: String = M?ller

То же самое происходит в моей первой пробной программе scala:

import scala.io.StdIn.readLine

object Hello {
    def main(args: Array[String]) {
      val myname=readLine("What is your name?","ISO-8859-1")
      println("Hallo " + myname + "!")
    }
}

При вызове через "scala Hello" получается: Как вас зовут? Мюллер Алло, Мюллер!

Я предполагаю, что println использует другую кодировку по умолчанию (кстати, часть «ISO-8859-1» ничего не изменила)?


person Rriskit    schedule 27.12.2014    source источник
comment
Вы пробовали с кодировкой UTF-8? Я не могу проверить, но на машине Unix по умолчанию работает как положено.   -  person Lomig Mégard    schedule 28.12.2014
comment
Что делает действие chcp 1252 перед запуском scala repl? Я предполагаю, что у вас нет кодовых точек Unicode в оболочке cmd   -  person S.R.I    schedule 28.12.2014
comment
Реплика Scala просто использует любую доступную ему кодировку при запуске, то есть она наследует эти свойства из существующей среды.   -  person S.R.I    schedule 28.12.2014
comment
chcp 65001 не поддерживает äüö и т. д. на немецкой клавиатуре   -  person Rriskit    schedule 28.12.2014
comment
@SRI, в каком-то смысле вы правы: но он не выбирает консоль по умолчанию, как я ожидал, вместо этого использует настройки Java по умолчанию (cp1252 в среде Windows). Но спасибо, это привело к правильной точке!   -  person Rriskit    schedule 29.12.2014
comment
См. мой ответ на связанный вопрос: stackoverflow.com/a/38490217/3706042   -  person Dedkov Vadim    schedule 20.07.2016


Ответы (1)


scala> System.getProperty("file.encoding")

показал cp1252. Итак, я создал переменную среды (спасибо Мартину Штурму) JAVA_OPTS="-Dfile.encoding=CP850", и в настоящее время все работает, как и ожидалось (München ist schön).

person Rriskit    schedule 28.12.2014