Javaのデフォルト文字コードはSJISとUTF-8どちら?

このQ&Aのポイント
  • Javaのデフォルト文字コードはSJISとUTF-8のどちらが使われているのか気になっています。現在、PCにインストールしているJavaのバージョンはVersion 6 Update 21です。eclipse上のコンソールで実行する際、入力がUTF-8のため、equals()での比較ができません。また、DOS窓上では入力もSJISになり、"終了"で終了します。この問題はeclipseの設定の問題なのでしょうか、それともJavaのインストール時の設定の問題なのでしょうか。初心者の質問ですが、教えていただけると幸いです。
  • Javaのデフォルト文字コードについて質問です。私のPCにはJavaのバージョン6 Update 21がインストールされています。eclipse上のコンソールではUTF-8の入力ができず、equals()での比較もできません。また、DOS窓上ではSJISの入力で"終了"して終了します。この問題はeclipseの設定の問題なのでしょうか、それともJavaのインストール時の設定の問題なのでしょうか。初歩的な質問ですが、教えていただけますと助かります。
  • Javaのデフォルト文字コードに関して質問があります。私のPCにはJavaのVersion 6 Update 21がインストールされています。eclipse上のコンソールでの入力はUTF-8であり、equals()での比較ができない状況です。一方、DOS窓上ではSJISの入力で"終了"できるようです。この問題はeclipseの設定の問題なのか、それともJavaのインストール時の設定の問題なのか、初心者なのでよく分かりません。ご教授いただけるとありがたいです。
回答を見る
  • ベストアンサー

javaは、SJISとUTF-8のどちらがデフォルトなのでしょうか?

javaは、SJISとUTF-8のどちらがデフォルトなのでしょうか? 現在PCにインストールしているJavaのバージョンは、Version 6 Update 21です。 eclips上のコンソールで実行すると、入力がUTF-8の為、equals()での比較が出来ません。 //---以下サンプルソース-- System.out.println("入力"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String strTmp = br.readLine(); //入力 StringBuffer sb = new StringBuffer(); //入力で、”終了”を入力しても、strTmp.equals("終了")が、TRUEになりません。 while(!strTmp.equals("終了")){ sb.append(strTmp); strTmp = br.readLine(); //入力 } //---ここまで--- DOS窓上で、「javac -encoding utf8 sample.java」とやって、テストすると入力もSJISな為、”終了”で終了します。 これは、eclipsの問題ですか? javaのインストール時の設定の問題ですか? 初歩的な質問で、恐縮ですが、どうかご教授下さい。m(_。_)m

  • besei
  • お礼率74% (80/108)
  • Java
  • 回答数1
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

>javac -encoding utf8 sample.java これはsample.javaがutf8の文字コードで書いてあるってjavaに教えています。 つまりsample.javaソースファイルはutf-8の文字コードなのでしょう。 -encodingを指定しないデフォルトはプラットホームに従うのでWindowsならSJISと解釈されます。 ソースがutf-8なのに-encodingを指定しないでjavacでコンパイルすると全角文字列の解釈がおかしくなってしまいます。 それで、-encodingを指定しない場合には"終了"が正しく認識できないと思われます。 >System.out.println("入力"); この"入力"は読める形式で表示されますか?

besei
質問者

補足

アドバイス頂き、ありがとうございます。 はい、確かにソースは、UTF-8です。 だから、-encodingでUTF-8と指定する必要があったのですね。 >>System.out.println("入力"); >この"入力"は読める形式で表示されますか? はい、DOS画面での実行も、eclipsコンソールでの実行も、読める形式で出力されます。 eclipsは、pleiades-e3.5-php_20090930.zipです。 eclipsでJavaを書く時は、UTF-8じゃ無いのですか?

関連するQ&A

  • JavaでString型をChar型に変換するプログラムが分かりません

    JavaでString型をChar型に変換するプログラムが分かりません;; どなかた助けて下さい。 下のプログラムの何がいけないんでしょうか?? いろいろ間違ってるところはあると思うんですが、教えて下さい! import java.io.*; class { public static void main(String args[]) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); StringBuffer moji = new StringBuffer(str1); char nyuu=moji;

  • 三つの文字を順に並べるプログラム

    三つの文字を入力して、順番に並べて表示させるプログラムが作りたいのですが、どうしたらいいのかわかりません。 二つまではできました。以下に記します import java.io.*; class Sample { public static void main(String args[]) throws IOException { System.out.println("文字列1を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1=br.readLine(); System.out.println("文字列2を入力してください。"); String str2=br.readLine(); int s = 1,t = 0; if(str1.length()>str2.length()){ int len=str1.length(); StringBuffer sb=new StringBuffer(str1); while(s<len+1){ sb.insert(s,str2.charAt(t)); s=s+2; t++; } System.out.println("文字列は"+sb+"となる。"); }else{ int len=str2.length(); StringBuffer sb=new StringBuffer(str2); while(s<len+1){ sb.insert(s-1,str1.charAt(t)); s=s+2; t++; } System.out.println("文字列は"+sb+"となる。"); } } } str1に123 str2に45といった風に入力すると14253といった風になります。 これにstr3を加え、str3が6789ならば、146257389 となる風にしたいです。

    • ベストアンサー
    • Java
  • javaについて

    このプログラムは文字を入力して、検索をかけてその検索にかかった秒数を表示するものですが、検索数を表示するのにはどうしたらいいでしょうか? import java.io.*; import java.net.*; public class Sample { public static void main(String[] args) { System.out.println("入力してください"); String keyword = getKeyword(); String htmlSrc = getHTMLSrc("http://search.yahoo.co.jp/search?p=" + keyword, "UTF-8"); double sec = getSearchSec(htmlSrc); if (sec > 0) { System.out.println("検索秒数は" + sec + "秒"); } else { System.out.println("検索結果0件"); } } private static String getKeyword() { String keyword = ""; BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(System.in)); keyword = br.readLine(); } catch (IOException e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } keyword = keyword.replaceAll(" ", "+"); return keyword; } private static String getHTMLSrc(String strURL, String charSet) { StringBuffer sb = new StringBuffer(); HttpURLConnection conn = null; BufferedReader br = null; try { URL url = new URL(strURL); conn = (HttpURLConnection)url.openConnection(); InputStreamReader isr = new InputStreamReader(conn.getInputStream(), charSet); br = new BufferedReader(isr); String tmp = ""; while ((tmp = br.readLine()) != null) { sb.append(tmp); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) { br.close(); } if (conn != null) { conn.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } private static double getSearchSec(String htmlSrc) { double sec = 0; String tmp = htmlSrc.replaceAll("<.+?>| ", ""); tmp = tmp.replaceAll(".*件-", ""); tmp = tmp.replaceAll("秒.*", ""); try { sec = Double.parseDouble(tmp); } catch (NumberFormatException e) { } return sec; } }

  • javaについて

    こういうプログラムを組んだんですが、うまく実行できません。 どんな改善をしたらよいでしょうか? import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class Sample { public static void main(String[] args) { String htmlSrc = getHTMLSrc("http://search.yahoo.co.jp/search?p=java", "UTF-8"); htmlSrc = htmlSrc.replaceAll("<.+?>| ", ""); htmlSrc = htmlSrc.replaceAll(".*件-", ""); htmlSrc = htmlSrc.replaceAll("秒.*", "秒"); System.out.println(htmlSrc); } private static String getHTMLSrc(String strURL, String charSet) { StringBuffer sb = new StringBuffer(); HttpURLConnection conn = null; BufferedReader br = null; try { URL url = new URL(strURL); conn = (HttpURLConnection)url.openConnection(); InputStreamReader isr = new InputStreamReader(conn.getInputStream(), charSet); br = new BufferedReader(isr); String tmp = ""; while ((tmp = br.readLine()) != null) { sb.append(tmp); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) { br.close(); } if (conn != null) { conn.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } } 以下のエラーが表示されるんですが、どうしたらよいでしょうか?? 環境が悪いのでしょうか?? java.net.ConnectException: Operation timed out

    • ベストアンサー
    • Java
  • java 検索数表示ができるようにしたいのですが

    補足へ import java.io.*; import java.net.*; import java.lang.*; public class secc3 { public static void main(String[] args) { System.out.println("入力"); String keyword = getKeyword(); String htmlSrc = getHTMLSrc("http://search.yahoo.co.jp/search?p=" + keyword, "UTF-8"); String sec = getNumSearchHits(htmlSrc); sec = sec.replace(",",""); int ken = Integer.parseInt(sec); System.out.println(ken); if (ken > 0) { System.out.println("Hit数約" + ken + "件"); } else { System.out.println("結果0件"); } } private static String getKeyword() { String keyword = ""; BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(System.in)); keyword = br.readLine(); } catch (IOException e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } keyword = keyword.replaceAll(" ", "+"); return keyword; } private static String getHTMLSrc(String strURL, String charSet) { StringBuffer sb = new StringBuffer(); HttpURLConnection conn = null; BufferedReader br = null; try { URL url = new URL(strURL); conn = (HttpURLConnection)url.openConnection(); InputStreamReader isr = new InputStreamReader(conn.getInputStream(), charSet); br = new BufferedReader(isr); String tmp = ""; while ((tmp = br.readLine()) != null) { sb.append(tmp); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) { br.close(); } if (conn != null) { conn.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } private static String getNumSearchHits(String htmlSrc) { java.util.regex.Pattern p = java.util.regex.Pattern.compile(" / 約([,0-9]+)件 - "); java.util.regex.Matcher m = p.matcher(htmlSrc); return m.find() ? htmlSrc.substring(m.start(1), m.end(1)) : ""; } }

  • 文字列について

    適当な文字列をキーボードから入力し、次に別の適当な整数numをキーボードから入力する。次に先に入力した文字列のnum番目からnum個の文字だけ逆順になるように文字列を並び替えた文字列を新たな文字列変数に代入し、その結果を画面に出力するプログラムを下記で作成したのですが、文字列時代が逆になってしまいます。どうしたら、 結果    文字列を入力      My name is Taro Sandai.    整数を入力     10    My name isdnaS oraT になるのですか? import java.io.*; class mojiretu4 { public static void main(String args[]) throws IOException { System.out.println("文字列を入力"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("整数を入力"); String str2 = br.readLine(); int num = Integer.parseInt(str2); StringBuffer sb = new StringBuffer(str1); sb.reverse(); System.out.println(sb);

    • ベストアンサー
    • Java
  • java プログラミングについて

    独学でjavaに挑戦中ですが、書店で購入した本のソースプログラムを少し変えたいのですが、ご教授をお願いします。数当てゲームのプログラムで、一つの設問を正解すると終了するゲームですが、複数の設問を設定したいのです、質問がうまく伝わるか不安ですがよろしくお願いします、プログラムを少しだけ書いておきます。 import java.io.*; class Mojiretuate { public static void main(String[] args) throws IOException { String str = "こんにちは";  /*質問箇所*/ String str2; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("文字列当てゲームです。"); System.out.println("答えは何かのあいさつです。"); for(;;){ System.out.println("\n入力:"); str2 = br.readLine(); System.out.println("入力文字列の長さ:" + str2.length()); if(str.equals(str2)){ System.out.println("正解です!"); break; } 

    • ベストアンサー
    • Java
  • javaについて

    このプログラムは文字を入力して、検索をかけてその検索にかかった秒数を表示するものですが、検索数を表示するのにはどう書き換えますでしょうか? import java.io.*; import java.net.*; public class Sample { public static void main(String[] args) { System.out.println("入力してください"); String keyword = getKeyword(); String htmlSrc = getHTMLSrc("http://search.yahoo.co.jp/search?p=" + keyword, "UTF-8"); double sec = getSearchSec(htmlSrc); if (sec > 0) { System.out.println("検索秒数は" + sec + "秒"); } else { System.out.println("検索結果0件"); } } private static String getKeyword() { String keyword = ""; BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(System.in)); keyword = br.readLine(); } catch (IOException e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } keyword = keyword.replaceAll(" ", "+"); return keyword; } private static String getHTMLSrc(String strURL, String charSet) { StringBuffer sb = new StringBuffer(); HttpURLConnection conn = null; BufferedReader br = null; try { URL url = new URL(strURL); conn = (HttpURLConnection)url.openConnection(); InputStreamReader isr = new InputStreamReader(conn.getInputStream(), charSet); br = new BufferedReader(isr); String tmp = ""; while ((tmp = br.readLine()) != null) { sb.append(tmp); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) { br.close(); } if (conn != null) { conn.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } private static double getSearchSec(String htmlSrc) { double sec = 0; String tmp = htmlSrc.replaceAll("<.+?>| ", ""); tmp = tmp.replaceAll(".*件-", ""); tmp = tmp.replaceAll("秒.*", ""); try { sec = Double.parseDouble(tmp); } catch (NumberFormatException e) { } return sec; } }

    • ベストアンサー
    • Java
  • Javaの文字コード変換方法

    文字コードの変換で困っています。 例えば、標準入力で「あいう」と入力して、その文字列を UTF-8に変換して出力したいのですが、うまくいきません。 サイトにはbyteに変換してから入れると書いていましたが、 よくわかりませんでした。 宜しくお願いします。 以下、今できているソースです。 (ソースコード) import java.io.*; public class ChangeCord { public static void main( String[] args ) { try { System.out.println("何か日本語を入力してください。"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in, "UTF-8")); String str = br.readLine(); System.out.println("文字コードUTF-8に変換した結果"); System.out.println(str); }catch (Exception e) { System.out.println("エラー"); } } } (出力結果) 何か日本語を入力してください。 あいう 文字コードUTF-8に変換した結果 ?????? 以上です。

    • ベストアンサー
    • Java
  • JAVAの初心者です。

    import java.io.*; class Sample1 { public static void main(String args[])throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); do{ System.out.println("1:入力文字整数確かめ"); System.out.println("2:終了"); String hako = br.readLine(); int sen = Integer.parseInt(hako); switch (sen){ case 1: System.out.println("整数を入力してください。"); String hako2 = br.readLine(); int hako3 = Integer.parseInt(hako2); if ((hako3%2)==0){ System.out.println("これは偶数ですね。"); } System.out.println("奇数ですね。"); break; case 2: System.out.println("終了いたします。"); break; } }while(sen != 2); } } 上記のように組んだのですが、}whileのところでエラー が出てしまうのです。 これってなぜなのでしょう?? 初心者特有の質問かもしれませんがご教授いただけたら嬉しいです。宜しくお願いいたします。 関係ないのかも知れませんがJDK1-5-006を使用してます。

    • ベストアンサー
    • Java

専門家に質問してみよう