在对某些将ascii序列转换为unicode字符的代码进行单元测试时,我发现Clojure测试的输出存在问题。

我已经测试过我的终端可以输出unicode字符(通过对测试文件进行分类),并且可以正常工作,因此问题似乎与leiningen,Clojure或clojure.test有关。

这是一个示例测试(使用unicode的希腊文部分-我也将使用希腊文扩展名,但我想同样的问题也会适用): 通用标签

这是由于输入中缺少空格而导致的失败。 lein test的输出如下: 通用标签

我在这里做错了什么?这是终端仿真问题还是与Clojure相关的问题?我在使用Slime / swank / emacs的REPL中运行代码时遇到相同的问题。 emacs中的REPL只输出用于unicode输出的问号(尽管emacs完全能够理解unicode)。

我尝试在Terminal和iTerm(OS X)中运行此程序,结果相同。

有帮助吗?

解决方案

事实证明,您可以将选项传递给java以强制*out*的输出编码,以便Unicode可以正常工作,如下所示: 通用标签

在使用Leiningen时,我将此属性添加到了project.clj文件中: 通用标签

其他提示

Clojure本身似乎很明确(这是Ubuntu 10.10,gnome-terminal,OpenJDK): 通用标签

但是它确实破坏了emacs / swank / clojure-maven-plugin / maven

在emacs中的REPL中: 通用标签

如果我使用maven,下面的简单pom文件以及mvn clojure:repl,那么就可以了: 通用标签

但是如果我使用以下代码段添加jline库: 通用标签

然后我得到: 通用标签

这看起来很像您的错误。因此,问题可能出在jLine,或是Leiningen和maven与jLine相关的其他共同点。

或者当然,可能有两个独立的与unicode相关的故障。

这是我的maven pom.xml文件,以防万一有人尝试调试它。 通用标签

我很欣赏这不是答案,但是我认为这可能会有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top