Scala编译器是否与UTF-8编码的源文件一起使用?
我有一个非常简单的
Scala代码
var str = "≤" for( ch <- str ) { printf("%d,%x",ch.toInt,ch.toInt) ; println } println str = "u2264" ; for( ch <- str ) { printf("%d,ch.toInt) ; println } 如果在您的浏览器上没有正确显示,则第一个字符串包含一个字符,在双引号之间,这是符号U 2264的小于或等于. 该计划的产出 8218,201a 226,e2 167,a7 8804,2264 显然,第一个字符串在运行时长度为3个字符,而不是源文件中的1个字符长. 源文件以UTF-8存储.十六进制转储显示它被正确编码,第一个字符串是22 E2 89 A4 22.我正在使用Eclipse和Eclipse的Scala插件. > scala编译器是否接受以UTF-8编码的输入文件? 解决方法
回答我自己的问题:
是的,但前提是它知道它们是UTF-8编码的.在没有任何其他证据的情况下,它使用Java的file.encoding属性. (感谢@AndreasNeumann对这部分答案.)
因为我的file.encoding属性设置为MacRoman.即使我告诉eclipse文件是UTF-8,但这些信息并没有传达给Scala编译器.因此,编译器根据MacRoman编码将3字节序列E2 89 A4解释为三字符序列:较低的单引号(看起来很像逗号),“a”抑扬符和分段符号.这个3字符序列的unicode是U 201A U 00E2 U 00A7,它解释了我的程序的输出.
在command line for 如果你使用Scala IDE for Eclipse,你至少可以做三件事. >一种是在General>>下为所有工作区设置默认编码. Eclipse的全局首选项(或选项)中的工作区,如Iulian Dragos的回答所示.>在项目属性中(右键单击Package Explorer中的项目并选择Properties),在Resource preferences下,选择UTF-8作为Text文件编码.>最后,您可以在Compiler>>下的其他命令行参数下添加-encoding UTF-8. Scala中的首选项(或选项).您可以将其设置为全局首选项(或选项)或项目特定属性设置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |