首页 > 解决方案 > Scala / 特殊字符处理 / 如何将 m�dchen 变成 mädchen?

问题描述

我有一个 Scala Akka 应用程序,我在其中使用 ProcessBuilder 在 Futures 中执行 python 脚本。

不幸的是特殊字符显示不正确,所以我得到而不是 mädchen-> m�dchen (äöü -> �)

如果我通过命令行执行 python 脚本,我会得到“mädchen”的正确输出,所以我认为它与 python 脚本无关,而是与我的 Scala 输入读取有关。

蟒蛇蜘蛛:

print("mädchen")

斯卡拉:

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 相关的问题,以下说明将解决此问题:Using UTF-8 Encoding (CHCP 65001) in Command Prompt / Windows Powershell (Windows 10)

标签: scala

解决方案


推荐阅读