gpt4 book ai didi

scala - 从Scala解释器打印Unicode

转载 作者:行者123 更新时间:2023-12-03 12:16:02 25 4
gpt4 key购买 nike

使用Scala解释器时(即在命令行上运行命令“scala”),我无法正确打印unicode字符。当然可以正确打印a-z,A-Z等,但是例如€或ƒ打印为?。

print(8364.toChar)

结果是 ?而不是€。
可能是我做错了。我的终端支持utf-8字符,即使我将输出通过管道传输到单独的文件并在texteditor中打开它,被陈列。

这一切都在Mac OS X(Snow Leopard,10.6.2)和Scala 2.8(每晚构建)和Java 1.6.0_17上发生。

最佳答案

我找到了问题的原因,并找到了使其能够正常工作的解决方案。
正如我在发布问题并阅读Calum的答案以及在Mac上使用另一个项目(使用Java)在Mac上进行编码的问题后已经怀疑的那样,问题的原因是Mac OS X使用的默认编码。当您启动scala时解释程序,它将为指定平台使用默认编码。在Mac OS X上,这是Macroman;在Windows上,可能是CP1252。您可以通过在scala解释器中键入以下命令来检查此问题:

scala> System.getProperty("file.encoding");
res3: java.lang.String = MacRoman

根据 scala帮助测试,可以使用-D选项提供Java属性。但是,这对我不起作用。我最终设置了环境变量
JAVA_OPTS="-Dfile.encoding=UTF-8"

运行 scala后,上一条命令的结果将给出以下结果:
scala> System.getProperty("file.encoding")
res0: java.lang.String = UTF-8

现在,打印特殊字符可以按预期工作:
print(0x20AC.toChar)               


因此,这不是Scala中的错误,而是默认编码的问题。我认为,最好在所有平台上默认使用UTF-8。在寻求答案的过程中,我在此问题的Scala邮件列表中遇到了 discussion。在第一条消息中,建议当 file.encoding报告Macroman时,默认情况下在Mac OS X上使用UTF-8,因为UTF-8是Mac OS X上的默认字符集(我想知道为什么默认情况下 file.encoding设置为Macroman,可能这是Mac OS 10发行之前的继承?)。我不认为此建议将成为Scala 2.8的一部分,因为Martin Odersky wrote可能最好将它们保留在Java中(即尊重 file.encoding属性)。

关于scala - 从Scala解释器打印Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1948044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com