2013-03-30 30 views
4

在Tomcat 7中運行的aws ec2實例(3.2.30-49.59.amzn1.x86_64)上的clojure repl中存在以下問題:Unicode字符不會在clojure repl中打印(也不會通過響應http響應)

user=> (println "Tiësto") 
Ti�sto 

當然,驗證我的文件編碼爲UTF-8:

user=> (get (System/getProperties) "file.encoding") 
"UTF-8" 

...到目前爲止,一切都很好。也許它是一個REPL輸入的問題,所以我逃避輸入:

user=> (println "Ti\u00ebsto") 
Ti�sto 

...現在我嘗試打印出來的日誌,而不是

user=> (info "Tiësto") 
output from the log: 
2013-03-30 19:04:06.569 INFO default user - Tiësto 

太好了!雖然這個問題隨地吐痰「鐵斯托」外出時通過環處理器依然存在:發生在我的開發環境

{ 
... 
    artists: ["Ti�sto"], 
... 
} 

這些問題沒有(當然)。任何人都知道可能會發生什麼?

+0

如果您正在使用瀏覽器訪問REPL,瀏覽器可能獲得的字符編碼是錯誤的。 請參閱document/javascript控制檯中的document.characterSet。 在谷歌瀏覽器中,使用設置 - >工具 - >編碼 – stackunderflow

+0

這似乎是一個環境問題,而不是與Clojure或JVM本身相關的任何事情。只需在shell上檢查你的'locale',它應該產生一些像「en_US.UTF-8」 – 0100110010101

回答

0

你有沒有嘗試設置內容類型和字符編碼:

response.setContentType("text/html;charset=UTF-8"); 
response.setCharacterEncoding("UTF-8"); 
out.println(Tiësto);