【初心者】Java質問・相談スレッド132【専用】

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2009/10/11(日) 19:20:01
>>947
叩き売りワロタw
953デフォルトの名無しさん:2009/10/11(日) 20:03:55
>>950
しらねーよ
Javaでスケジューリングしてやってもいいしやらなくてもいい、他の奴が決める話じゃねぇ
954デフォルトの名無しさん:2009/10/11(日) 22:39:41
ちょっと質問なんですけど。
以下の条件で
1.OracleのDBの文字コードがEUC
2.クライアント側はSJIS
3.扱う文字は’梶f
普通にDBから’梶f取得して出力させたら’?’になるんですけど、
これはjavaの内部コードがUTF-16で、まずEUC→UTF-16の変換が行われて、
UTF-16に’梶fが対応していないので文字コードが失われる。
結果デフォルト表記である’?’になってしまう。

ということはJavaで文字コード変換をかけるのは無意味(文字コードが失われているので)。

ちなみにこれまでの調べによるとSJIS→UTF-16でも’梶fが対応していないので、
上記のDBの文字コードが仮にSJISであっても同じことがおこる(出力結果は’?’)。

っていう個人的な結論が出たんですけど合ってますか?
955デフォルトの名無しさん:2009/10/11(日) 22:45:59
何このデジャブ。もしかして同一人物の長ったらしい釣りなのか?
956デフォルトの名無しさん:2009/10/11(日) 23:36:53
分からないならレスしなくていいです。
957デフォルトの名無しさん:2009/10/12(月) 00:21:58
★Java2SEのソースコードについて質問です

java.util.Arraysクラスのメソッドsortのソースコードが知りたいのですが、
公開しているサイトはありますか?

Arraysクラスに限らず他のクラスのソースコードも読んでみたいので、
知っている方がいましたら教えてください

よろしくお願いします。
958デフォルトの名無しさん:2009/10/12(月) 00:25:22
>>957
Eclipseで見れたキガス(バージョン高いやつじゃないとダメかも)
違ったらごめんなさい

>>955
釣りじゃないです必死なんです
959デフォルトの名無しさん:2009/10/12(月) 00:25:37
SDKの中に含まれているだろ・・・お前はなにを言ってるんだ?
960デフォルトの名無しさん:2009/10/12(月) 00:26:47
>>958
>400 あたりからの流れを嫁
961デフォルトの名無しさん:2009/10/12(月) 00:41:28
>>960
せめてjavaでの回避が不可能という確証が得られれば
代案を提示できるんですけど
もし現行案で回避できると後で分かったらあの先輩に何を言われるか・・・
もう胃が痛いです
962デフォルトの名無しさん:2009/10/12(月) 00:53:16
>>954
postgresqlでutf8のDBで鰍ヘ表示できたよ。
963デフォルトの名無しさん:2009/10/12(月) 00:53:36
知らんがな
964デフォルトの名無しさん:2009/10/12(月) 01:05:05
だから

>UTF-16に’梶fが対応していないので文字コードが失われる。

ってことはないんじゃないかと
965デフォルトの名無しさん:2009/10/12(月) 01:14:56
>>963
他力本願ですしそう言われるのも承知で書き込んでます
だからそういう発言ドンとこいです!
でも最近胃が本気でグチョグチョになりかけてるので
できればお手柔らかにお願いします

>>962-964
UTF-8は対応しているということでしょうか
http://ash.jp/code/unitbl21.htm
この文字コード表はどう解釈したらいいのか分からなくなってきましたorz
966デフォルトの名無しさん:2009/10/12(月) 01:16:30
元データが壊れてんじゃないの?
検証できないんだから調べようがないわ
967デフォルトの名無しさん:2009/10/12(月) 01:24:17
すみません、質問です。

【やろうとしてること】テキストファイルの入力
【ハマってること】FileInputStreamのコンストラクタで「ソースが見つかりません」となる
【ソース】
import java.io.*;
public class practice {
public static void main(String[] args) {
File f;
FileInputStream fis;
f = new File("a.txt");
System.out.println(f.getName()); // [1]
fis = new FileInputStream(f); // [2]
} // try~catchは省略

すみません、、
なんとか自分で調べて解決しようとしていたのですが、
半日ほど調べても原因がさっぱりわからなかったので質問しました。
[1]では正常にファイル名が出力されますが、[2]でエラーとなります。
【やってみたこと】
FileReaderを使う → ×
ファイル名にフルパス → ×
FileInputStreamのコンストラクタにフルパス → ×

FileInputStreamのみでデバッグ中に対象ファイルをリネームしようとしたら
Windowsに怒られたので、ファイルは掴んでいるようなのですが、、、
JavaDocでは「FileNotFoundException - ファイルが存在しないか、普通のファイルではなくディレクトリであるか、またはなんらかの理由で開くことができない場合」
と有るのですが、ファイルは存在しますし(前述)、普通のテキストファイルです。
「なんらかの理由」??であるとすると見当がつきません。
長文で失礼しますが、何卒ご教示のほどよろしくお願いいたします。
968デフォルトの名無しさん:2009/10/12(月) 01:30:29
>>965
まずはjavaで鰍書き込んでみるこった。
969デフォルトの名無しさん:2009/10/12(月) 01:42:02
>>967
まだ開いていない (FileInputStreamを呼べていない) 段階でファイルを掴んでいるはずはないので、
他のプログラム (テキストエディタとか) がそのファイルを掴んでいるのではないか?
970デフォルトの名無しさん:2009/10/12(月) 02:13:23
画像を多めに開いた場合のフリーズするトラブルは、x64化すると解決することが多い
971デフォルトの名無しさん:2009/10/12(月) 02:31:58
スレッドとかよくわからないんですけどわかりやすく教えて下さい
入門本がなんとか分かるぐらいの人対象の説明でおねがいします
わかりやすい説明が書かれたサイトの紹介でも可
972デフォルトの名無しさん:2009/10/12(月) 03:03:26
UTF-16に’梶fが対応していないのではなく
DB(EUC)→Java(UTF-16)のマッピングに’梶fの対応が無い
という表現が正しい気がしています。

結局Javaでは無理という結論なのですが(Javaに渡った時点で文字コードが失われているため)。
973デフォルトの名無しさん:2009/10/12(月) 03:07:52
二番煎じだとネタにもならんな
974デフォルトの名無しさん:2009/10/12(月) 03:13:35
>>971
PCの中では、たくさんのプログラムが同時に動いてるだろ
今見てるブラウザの後ろで、メディアプレイヤーが音楽鳴らしながら、
メールソフトがメールチェックしてて、タスクバーの時計が時間を刻んでて、って感じで
ブラウザだけでも、マウスやキーボードの入力を処理しながら同時にサーバとの通信も処理してるだろ
そんなふうにPCの中で同時にたくさん動いてる処理のそれぞれがスレッド
同時に3つの処理をしたい場合は、3個のスレッドを使う
1つしか処理をしない場合でも、1個のスレッドを使っている
975デフォルトの名無しさん:2009/10/12(月) 04:12:24
そんな馬鹿っぽい質問にマジレスとか優しすぎる
976デフォルトの名無しさん:2009/10/12(月) 09:13:50
>>972
バイト列として直接引っ張り出してこちら側で変換するとか。
"株 EUC"で検索してみると判るけど、
「(株)」はJIS的には2つコードポイントがあって、
それが面倒な話に繋がっているのかもしれない。
977デフォルトの名無しさん:2009/10/12(月) 10:08:16
select convert(hoge, 'UTF-8') from tbl
じゃ、だめ?
978デフォルトの名無しさん:2009/10/12(月) 11:41:42
>>972
せめて同じスレのレスくらい見直せ。
Unicode(UTF-8/16/32)には「梶vがある。
Shift_JISには「梶vは無いが、Windows-31Jには「梶vがある。
EUC-JPには「梶vは無いが、x-eucJP-Openは「梶vがある。
979デフォルトの名無しさん:2009/10/12(月) 11:48:54
でもjava以外からは鰍ェ見えてるんだよね?
980デフォルトの名無しさん:2009/10/12(月) 12:01:54
>>957
C:\Program Files\Java\jdk*\src.zip
*の部分はバージョン依存 (最新は1.6.0_16)

Swing等、src.zipに無いものは、
http://openjdk.java.net/
(Sunが配布してるバイナリと100%一致してるわけじゃないけど)
981デフォルトの名無しさん:2009/10/12(月) 12:38:19
データの変換に失敗したみたいなチェック例外ってない?
982デフォルトの名無しさん:2009/10/12(月) 12:56:42
OracleのJA16EUCを、EUC-JPとして扱っているJDBCがおかしいってことか。
JA16EUCが、あくまで文字エンコーディングしか規定しないのかもしれないけど。
Oracleが文字セットを正しく認識した上で扱っているのなら、
>977 の方法でうまくいきそうだな。
983デフォルトの名無しさん:2009/10/12(月) 13:35:16
>>982
コネクションに鰍読めるキャラセットを指定しなきゃダメなんじゃないの。
984デフォルトの名無しさん:2009/10/12(月) 14:57:26
生のバイト列取ってきて文字コード見ればいいんじゃね?
985デフォルトの名無しさん:2009/10/12(月) 15:33:00
Calendar cal = Calendar.getInstance();
System.out.println(cal.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.MONTH));
System.out.println(cal.get(Calendar.DATE));
なんで、2つめの出力の時に9がでるのさ?
PCの時計はちゃんとした時間なんだけどな〜何でだろ
986デフォルトの名無しさん:2009/10/12(月) 15:42:34
>>985
http://java.sun.com/javase/ja/6/docs/ja/api/java/util/Calendar.html#MONTH
> get および set のための、月を示すフィールド値です。これはカレンダ固有の値です。
> グレゴリオ暦とユリウス暦の年の最初の月は JANUARY で 、0 となります。
> 最後の月は、1 年の月の数によります。
987デフォルトの名無しさん:2009/10/12(月) 15:42:52
>>985
それは Calendar.OCTOBER が 9 だからだ
988デフォルトの名無しさん:2009/10/12(月) 15:45:59
>>986
なるほど、カレンダーなんて意識した事がなかったからな〜
thx
989デフォルトの名無しさん:2009/10/12(月) 15:53:41
意識しなくともおかしかったらドキュメント嫁や
990デフォルトの名無しさん:2009/10/12(月) 17:45:06
Yahoo!プログラミング言語検索ランキング(今回2009/10/12、前回2009/10/9)

. 1(. 1) HTML      約5,020,000,000件(約5,030,000,000件)-
. 2(. 2) PHP        約3,000,000,000件(約2,980,000,000件)++
. 3(. 3) Java....     約 832,000,000件(約 832,000,000件)0
. 4(. 4) Forth.      約 324,000,000件(約 322,000,000件)++
. 5(. 5) Ruby..      約 274,000,000件(約 274,000,000件)0
. 6(. 6) perl.....      約 245,000,000件(約 244,000,000件)+
. 7(. 7) Python...     約 209,000,000件(約 205,000,000件)++
. 8(. 8) pascal...     約 168,000,000件(約 170,000,000件)--
. 9(. 9) Delphi      約 128,000,000件(約 127,000,000件)+
10(10) VisualBasic...  約 120,000,000件(約 121,000,000件)-
11(11) lisp...        約.  26,600,000件(約.  26,700,000件)-
12(12) fortran.......    約.  21,300,000件(約.  21,300,000件)0
13(13) COBOL.....   約.  17,100,000件(約.  17,900,000件)--
14(14) HSP        約.  12,400,000件(約.  12,300,000件)+
15(15) FreeBasic..   約   6,300,000件(約   6,310,000件)-
16(16) Tcl/Tk......    約   4,820,000件(約   4,940,000件)--
17(17) QBasic.....    約   4,160,000件(約   4,180,000件)--
18(18) VisualC....    約   1,340,000件(約   1,340,000件)0
19(19) DarkBASIC .  約   1,330,000件(約   1,330,000件)0
20(20) BasicStudio   約    302,000件(約    302,000件)0
21(21) N88basic......  約    218,000件(約    217,000件)+
22(22) f-basic.......    約    109,000件(約    109,000件)0
23(23) ActiveBasic   約.     90,600件(約.     90,100件)++
24(24) 99BASIC....   約.     11,300件(約.     11,300件)0

3Dprogramming 約792,000件(約790,000件)++
2Dprogramming 約. 57,100件(約. 57,600件)--
intel 約714,000,000件(約726,000,000件)--
amd 約349,000,000件(約352,000,000件)--
991デフォルトの名無しさん:2009/10/12(月) 22:01:47
>>969殿
原因は別にありましたが、無事解決しました。
お騒がせしてすみませんでした。
992デフォルトの名無しさん:2009/10/13(火) 09:26:58
>>985
javadocくらい読めよ、馬鹿が
993デフォルトの名無しさん:2009/10/13(火) 10:55:43
JavaやっててUTF-8統一しないのはカスである
994デフォルトの名無しさん:2009/10/13(火) 10:56:08
OracleにEUCのDB作ってみたけど鰍ヘ?になるな。
getBytesで取り出したらefbc9fになるな。
こりゃどうしようもないな。
995デフォルトの名無しさん:2009/10/13(火) 10:56:57
>>994
DBのエンコードがなんだろうが、文字化けせずに取り出せるよ
996デフォルトの名無しさん:2009/10/13(火) 10:57:37
>>994
insertの時点で化けてなんじゃないの?
997デフォルトの名無しさん:2009/10/13(火) 11:00:11
>>996
sqlplusでinsert into tbl values ('');
select test from tbl;
ですでに?になる。
998デフォルトの名無しさん:2009/10/13(火) 11:09:23
>>997
じゃあ、sqlplusとDBが噛み合っていない
winのクライアント使ってるならデフォルトでSJISになってるはず
999デフォルトの名無しさん:2009/10/13(火) 11:54:45
どうやったらかみ合うんかなー
1000デフォルトの名無しさん:2009/10/13(火) 12:08:19
>>999
sqlplusの設定あるだろ
teratermなんかに似ている
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。