У меня есть приложение Scala Akka, где я выполняю сценарии python внутри Futures с ProcessBuilder.
К сожалению, специальные символы не отображаются правильно, поэтому я получаю вместо mädchen-> m�dchen (äöü -> �)
Если я выполню python Сценарий через командную строку дает ли мне правильный вывод "mädchen", поэтому я предполагаю, что он не имеет ничего общего со сценарием python, а каким-то образом связан с моим Scala чтением ввода.
Python Паук:
print("mädchen")
Scala:
val proc = Process("scrapy runspider spider.py")
var output : String = ""
val exitValue = proc ! ProcessLogger (
(out) => if( out.trim.length > 0 )
output += out.trim,
(err) =>
System.err.printf("e:%s\n",err)
)
println(exitValue) // 0 -> succ.
println(output) // m�dchen -> should be mädchen
Я уже пробовал многие мысли, а также читал, что строки по умолчанию UTF -8, поэтому я не уверен, почему я получаю эти знаки вопроса.
Также я пытался безуспешно:
var byteBuffer: ByteBuffer = StandardCharsets.UTF_8.encode (output.toString ())
val str = new String (output.toString (). getBytes (), "UTF-8")
Обновление:
Похоже, windows связанная проблема, следующая инструкция решит эту проблему: Использование кодировки UTF-8 (CHCP 65001) в командной строке / Windows Powershell (Windows 10) * 10 31 *