scala - 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)
解决方案
推荐阅读
- angular - 无法访问在 ubuntu 服务器上的端口上运行的项目
- javascript - 在 html、css 和 js 网站库中显示本地文件中的图像
- c++ - 在文本文件中查找和替换字符串并输出到另一个文件
- firefox - 检查 Firefox 是否使用硬件加速
- string - 如何在Java中通过相同的多个分隔符分割字符串
- r - dplyr 默认分组选项
- java - 在子添加方法上多次工作
- node.js - node.js 中未定义 process.argv
- material-ui - 如何在 jss 中引用子组件中的规则名称
- r - 为什么使用 facet-grid 和 aes() 分隔组会产生不同的图形?