2

Javaファイルを使用してデータベースからUTF-8ユニコード化漢字を取得しようとしています。これを行うと、文字は疑問符として返されます。

ただし、データベースの文字を(を使用してselect * from ...)表示すると、文字は正常に表示されます。漢字で構成されるJavaファイルに文字列を印刷すると、それらも正常に印刷されます。

Eclipseでこの問題が発生しました。プログラムを実行すると、文字が疑問符として印刷されていました。ただし、この問題は、JavaファイルをUTF-8形式で保存したときに解決されました。

ターミナルで「ロケール」を実行すると、現在次のようになります。

LANG="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_CTYPE="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_ALL=

また、これを使用してJavaファイルをコンパイルしようとしました。

 javac -encoding UTF-8 [java file] 

しかし、それでも、出力は疑問符です。

たまにしか文字が表示されないのはかなり不思議です。誰かがこれについての説明がありますか?またはさらに良いことに、文字が正しく表示されるようにこれを修正するにはどうすればよいですか?

4

1 に答える 1

7

System.outプリントストリームはUTF-8プリントストリームとして作成されません。次のように変換できます。

import java.io.PrintStream;
import java.io.UnsupportedEncodingException;

public class JavaTest {

    public static void main(String[] args) {


        try{
            PrintStream out = new PrintStream(System.out, true, "UTF-8");

            out.println("Hello");
            out.println("施华洛世奇");
            out.println("World");
        }
        catch(UnsupportedEncodingException UEE){

            //Yada yada yada
        }
    }
}

ここで、次の方法でデフォルトのエンコーディングを設定することもできます。

java -Dfile.encoding=UTF-8  -jar JavaTest.jar
于 2013-03-20T06:26:52.843 に答える