2016-03-30 11 views
0

"\ 303 \ 251"ユニコードを表示している間、Scalaで何か問題があると思います。理想的には "é"と表示されるはずですが、代わりに "é©"と表示されます。スカラエンコーディングで何が問題になりますか?

2.10.4、2.10.5 & 2.11.8のようないくつかのスカラーバージョンで試しましたが、同じ出力(つまり、é)があります。

$ JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 sbt 
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8 
> console 
Welcome to Scala version 2.11.1 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_71). 
scala> print ("\303\251") 
é 
scala> System.getProperty("file.encoding"); 
res2: String = UTF8 

でも私はまだ251つまり、\ u00c3の\のu00a9、同じ出力\ \ 303のための同等の六角エスケープリテラルを使用

scala> print ("\u00c3\u00a9") 
é 

注:私は唯一のLinuxとUbuntu OSでこの問題に直面しているが、以下に示すようにMACにそれは非常にうまく動作します:

scala> print ("\303\251") 
é 

ScalaはLinuxの&のUbuntuマシンで間違った出力を与えている理由を私は理解していませんでした。誰もこの問題に直面していますか?これを修正する方法を教えてください。あなたの時間と助けてくれてありがとう。

+0

これはおそらくLinux文字エンコードの問題です。私は、Linuxマシンの基礎文字コードがMacとは違ってこれらの文字を解釈すると推測します。 –

+0

私のLubuntu 15.10(Linux 4.2.0-34-generic)ラップトップのREPL(2.11.7)から正しく印刷します。しかし、私は、 "Octalのエスケープ文字は廃止されました"という警告を受けます。 – jwvh

+0

コマンドラインから 'echo -e" \ u00c3 \ u00a9 "を起動するとどうなりますか? – jwvh

答えて

0

はい、Linuxの文字エンコーディングが問題です。環境変数LANGを変更すると(下記参照)、すべて正常に動作します。

/usr/bin/env LANG=en_US.UTF-8 /usr/bin/xterm 
関連する問題