2009-05-30 12 views
1

Java 1.5のMac OS X 10.5では、このコードスニペットを使用しています。キリル文字の文字列が正しく表示されるようにするにはどうすればよいですか?

public static void main(String[] args) { 
    String name = "Алексей"; 
    System.out.println("name = " + name); 
} 

出力は次のとおりです。

name = ??????? 

私が見込ま:

name = Алексей 

は、どのように私はこれを実現することができますか?

答えて

2

すべての有益なアイデアに感謝します。

それは私の問題への鍵は、この文だっ判明:、私は私が使用している、このコードスニペット

IDEを持って

のJava 1.5とのMac OS X 10.5

、IntelliJ IDEAは明示的にファイルエンコーディングをMacRomanに設定していました。プロジェクトのエンコーディングをUTF-8に変更することで、コードを変更せずに問題は解決しました。

5

ここには2つの潜在的な問題があります。まず、あなたのソースコードにキリル文字があります。つまり、ファイルの格納に使用したエンコーディングがコンパイラで使用されているものと同じであることを確認する必要があります。 javacマンページを参照して、デフォルトのエンコードの内容や特定のエンコードの指定方法を確認してください。または、文字列内でUnicodeエスケープを使用します。

2番目の可能性は、ターミナルフォントにキリル文字が表示されないことです。しかし、(1)ソースコード内の文字を見ることができ、(2)欠けているグリフがブロックとしてレンダリングされていると誤ったエンコーディングが疑問符として表示されるため、これは起こっているとは思わない。

テストするには、文字列を正しいUnicodeエスケープで置き換え、文字が画面に表示されることを確認します。

3

あなたの代わりにSystem.outのコンソールクラスを使用すると、あなたは本当にラッキーなら、あなたMIGHTはキリル文字を印刷するためのコンソールを取得することができ

しかし、一般的に、コンソールは文字セットのサポートがありません。

文字列を他の方法で出力するほうがずっと信頼できます。それをSwingコンポーネントに出力します。

1

文字列がどこかから動的に取得され、必要に応じてエンコードされていることを確認する必要がある場合は、その文字列を変換するパラメータとしてCharset型を取るStringのクラスコンストラクタを使用します。