ネタ心者歓迎!今更ながらにJava相談室 その4
レス数が950を超えています。1000を超えると書き込みができなくなります。
00011
NGNG|| ̄ ̄| ∧_∧
||Java| ( ) ∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
||__| ( ○ ) ( ) < 俺達の旅はここから始まる。
|| │ | │ / | \___________
((二二)) .(_(__)〜(___ノ
( ゚Д゚) < カキコする前に>>2-10をチェックしとけゴルァ!!
>>2 過去スレの一覧
>>3 Javaの基礎と よくある質問 (初心者はここをチェック!)
>>4 Java関連スレいろいろ
>>5 Javaを撲滅させたい方、死滅を心配してる方、Cとの違いを知りたい方はこちらへ
* 諸般の事情により、リンクがずれる事もあります。
0856デフォルトの名無しさん
NGNG深く知りたかったら「無名クラス」について調べてみましょう。
なかなか面白い仕組みです.
0858デフォルトの名無しさん
NGNGimport java.awt.*;
import java.awt.image.*;
public class FillShape {
public static void main( String[] args){
new FillShape();
}
public FillShape() {
Polygon poly = new Polygon();
poly.addPoint( 8, 0);
poly.addPoint( 16, 8);
poly.addPoint( 8, 16);
poly.addPoint( 0, 8);
ImageViewer comp = new ImageViewer( createImage( poly) );
Frame frame = new Frame();
frame.add( comp);
frame.setSize( 100, 100);
frame.setVisible( true);
}
static Image createImage( Shape shape){
Rectangle rect = shape.getBounds();
BufferedImage image =
new BufferedImage( rect.width, rect.height, BufferedImage.TYPE_INT_RGB);
System.out.println( image);
Graphics2D g = (Graphics2D)image.getGraphics();
g.setColor( Color.blue);
g.fill( shape);
g.setColor( Color.red);
g.draw( shape);
return image;
}
}
class ImageViewer extends Component {
Image image;
public ImageViewer( Image image){
this.image = image;
}
public void paint( Graphics graphics){
graphics.drawImage( image, 0, 0, this);
}
}
// うまく fill されない様子が分かります。
// 改善方法を教えてください。
0859デフォルトの名無しさん
NGNGJDK1.4.0-rcで見ると特に問題ないように見える。(小さすぎてよく解からんけど)
0860デフォルトの名無しさん
NGNG赤いラインが切れてるけど、
これはImageのサイズが16*16(0〜15、0〜15)しか無いのに、
16, 8や
8, 16
に塗ってるのが問題かと。
↑Java2Dには全く興味ないしやった事も余り無いので俺の直感なんだけどね。
0861デフォルトの名無しさん
NGNGつまり16 * 16のImageの場合、
座標はxが0-16, yも0-16なんだけど
drawLine(0, 0, 0, 16)をした場合
x座標の0と1の間が塗られる。
だから座標の16を指定した場合は、16-17の間が塗られるんだけど
Imageは16*16なので塗ることが出来ない。
0862デフォルトの名無しさん
NGNGShapeに対して一回り大きいShapeが作られて
そこから元のShapeを取り除いた領域に対してfillが行われる
っていう感じだったと思った。
ので実行結果的にはそれで正常。
0863デフォルトの名無しさん
NGNGdrawにはStrokeが関わるはず・・・
0864デフォルトの名無しさん
NGNGの動作がそうなってる、ということで。
0865デフォルトの名無しさん
NGNG> Shapeに対して一回り大きいShapeが作られて
> そこから元のShapeを取り除いた領域に対してfillが行われる
っていうのもちょっと違うんだけどね。
まあ要するにg.draw(shape)するには
shape.getBounds()では狭すぎる、っていうことです。
0866超初心者
NGNG0867デフォルトの名無しさん
NGNGオブジェクトのもっている状態や振る舞い(メソッド)を記述
オブジェクト:クラス(設計図)によって実際に作成されたもの
って説明でいいかしら?
0868デフォルトの名無しさん
NGNG>オブジェクト:クラス(設計図)によって実際に作成されたもの
狭義ではそうだが、普通はそれをインスタンスと呼ぶ
広義ではクラスもインスタンスも含めてオブジェクト
0869デフォルトの名無しさん
NGNG「クラスもオブジェクトの一種」という考え方は
リフレクションが必要になるまで後回しにしといたほうが
混乱しないで済むと思う。
言語や環境によっては
「クラス ⊂ オブジェクト」が
サポートされてなかったりするし。(C++とか。)
0870デフォルト名無し
NGNGAクラスを継承したBクラスがあります。BクラスではAクラスのdrawメソッド
(図形を描く類)をそのまま使っています。今、AとBの描く図形の色を変え
たいと思い、getFillColor(Graphics g)メソッドを作りBクラスで
オーバーライドしています。そしてAのdrawメソッドの中でgetFillColorを
呼び出して色を決定しようと考えているのですが、違う色になりません。
Bクラスのインスタンスで、オーバーライドしていないためAのdrawメソッドから
呼び出しているgetFillColorメソッドは、BのgetFillColorメソッドを
呼び出さないのですか?
0871870
NGNGすみません。こう読みなおしてください。
0872デフォルトの名無しさん
NGNG>Bクラスのインスタンスで、オーバーライドしていないためAのdrawメソッドから
>呼び出しているgetFillColorメソッドは、BのgetFillColorメソッドを
>呼び出さないのですか?
そんなことはありません。getFillColorをちゃんとオーバーライドしていれば、
呼び出されます。
0873870
NGNGpackage graphicstest;
import java.awt.*;
public class MiniteHand {
protected point2D core;
protected point2D edge;
private point2D uRight;
private point2D uLeft;
private point2D bRight;
private point2D bLeft;
private double length = 100.0;
private gApplet app;
private Color color;
/**デフォルトコンストラクタの空定義*/
public MiniteHand() {}
/**コンストラクタの定義*/
public MiniteHand(int angle) {
/*******ここは関係ないので省略*********/
}
public void draw(Graphics g){
/*******この以前は関係ないので省略*********/
getFillColor(g);
g.fillPolygon(Xs,Ys,Xs.length);
g.setColor(this.app.currentColor);
g.drawPolygon(Xs,Ys,Xs.length);
}
private void getFillColor(Graphics g){
g.setColor(Color.red);
g.drawString("In the MiniteHand",0,30);
}
}
public class HourHand extends MiniteHand {
public static double length = 75.0;
public HourHand(int angle) {
/*******ここは関係ないので省略*********/
}
private void getFillColor(Graphics g){
g.setColor(Color.blue); //青にならない
g.drawString("In the HourHand",0,40); //表示されない
}
0874デフォルトの名無しさん
NGNG0875870
NGNG0876へぼへぼ
NGNGそれは、標準出力で、Serializableなクラスのインスタンスそのものを
出力できないか、ということです。
やりたいことは、クライアントからProcessをつかってrshをよび、サーバー側
のクラスを実行します。その結果の入ったクラスを、Process.getInputStream
を使い、ObjectInputStream経由で取得する、という物です。
ふつうに文字列を標準出力した場合は、ちゃんと取得できるので、
全く不可能とは思えないのですが・・・。
よろしくお願いします。
0877デフォルトの名無しさん
NGNG出来るんじゃないの?
0878へぼへぼ
NGNGあぅ。やっぱりできるんですね。
今日一日、それで詰まってるんです。
ぜひ、ご教授願います。
0879デフォルトの名無しさん
NGNGAbcBean bean = new AbcBean();
ObjectOutputStream out = new ObjectOutputStream(System.out);
out.writeObject(bean);
out.flush();
----------------------------
【受信側】
ObjectInputStream in = new ObjectInputStream(process.getInputStream());
AbcBean bean = (AbcBean)in.readObject();
これで出来ないなら Base64 かなにかで ASCII にして出力すれば?
ちゅうか、上の説明だけじゃどこで躓いてるのかサパーリわからんよ。
0880へぼへぼ
NGNG自分なりに調べて、上記の様にはしたのですが、readObject()で、
「UTFDataFormatException」が発生してしまいます。
また、処理を簡略化した物では、「EOFException while reading the
stream header」となってしまいます。
出力するクラスの規模は全く違うのですが、それ以外は
ほとんど変わりません。
頭がいっぱいいっぱいです・・・。
0881デフォルトの名無しさん
NGNGなら多分標準出力にバイナリ食わせているのが問題なのだろう。
--------------------------------------
【送信側】
AbcBean bean = new AbcBean();
// シリアライズされたバイナリを取得
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(baos);
out.writeObject(bean);
out.flush();
// ASCII 文字の 16 進数で出力
byte[] binary = baos.toByteArray();
for(int i=0; i<binary.length; i++){
System.out.print(Character.forDigit((binary[i] >> 4) & 0x0F, 16));
System.out.print(Character.forDigit((binary[i] >> 0) & 0x0F, 16));
}
System.out.flush();
--------------------------------------
【受信側】
// ASCII 文字の 16 進数をバイナリに変換
InputStream in = process.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while(true){
int ch1 = in.read();
int ch2 = in.read();
if(ch1 < 0 || ch2 < 0) break;
int bin = (Character.digit(ch1, 16) << 4) | Character.digit(ch1, 16);
baos.write(bin);
}
// バイナリからオブジェクト復元
byte[] binary = baos.toByteArray();
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(binary));
AbcBean bean = (AbcBean)in.readObject();
--------------------------------------
もっとちゃんとやりたかったらデータ長と MD5 でも付けれ。
というか一回 RMI を勉強すると幸せになれるかもしれないと思ってみたり。
0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNGframe.addInternalFrameListener(new InternalFrameAdapter() {
public void internalFrameActived(InternalFrameEvent evt) {
System.out.println("選択された");
}
} );
これでいいんじゃないの?なんか出来ないんだけど、なんかおかしい?
0884デフォルトの名無しさん
NGNGこのたびIE拡張ツールinfoseekBarを改造してすごいソフトを作制しています
しかし残念なことに私の力だけでは改造しきれぬほどに高機能化してしまいました
そこでこのインポコシークバーの改造協力者を募集しています
私よりも高度な改造ができるという方はぜひとも
http://pc.2ch.net/test/read.cgi/win/1012018757/
までおいでください
来ない人は自動的に私以下のプログラマのレッテルを貼りますのでよろしく
桂様でした(拍手)
0885デフォルトの名無しさん
NGNGinternalFrameActivatedだよ
多分スペルミスでしょ
0886デフォルトの名無しさん
NGNG゚゛゜ゝゞゟ゠
0887Java初心者
NGNGhttp://logos.jp/development/javahello/
0888デフォルトの名無しさん
NGNGmyTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
if (evt.getValueIsAdjusting()) {
System.out.println("X: " + evt.getLastIndex());
}
}
} );
myTable.getColumnModel().addColumnModelListener(new TableColumnModelListener() {
public void columnSelectionChanged(ListSelectionEvent evt) {
if (evt.getValueIsAdjusting()) {
System.out.println("Y: " + evt.getLastIndex());
}
}
} );
これでいいんとちがうの?何か違う?
マウスでセルを選択したら検出してくれたものの、カーソルでの操作は一切だめでした
APIが膨大でどーすればよいのかわかりませぬ、誰か助けて・・
0889デフォルトの名無しさん
NGNGtable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent evt) {
if (!evt.getValueIsAdjusting()) {
System.out.println("X: " + table.getSelectedColumn());
System.out.println("Y: " + table.getSelectedRow());
}
}
} );
コレでいいんちゃう?あと、getValueIsAdjustingなイベントは
捨て対象だよ。ディスパッチしちゃだめ。
0890デフォルトの名無しさん
NGNG次のように定義したクラスの中で定義した、
public class Hoge extends JFrame implements KeyListener {
:
}
KeyPressed関数でTABキーを検出するにはどうしたらいいのでしょうか?
public void keyPressed( KeyEvent ke ) {
int code = ke.getKeyCode();
:
}
TABは予約されてるとか・・・SUNの文書には書いてあったんですが、
なんとか使う方法は無いですかね?
public boolean isManagingFocus() {
return true; // hack
}
ってのも試したんですけど、ダメでした。
それから、TABを検出する方法があったとして、
その際に生じる可能性のある不具合はどんなものがありますか?
0891デフォルトの名無しさん
NGNGどのような方法を使うんでしょうか?
0892デフォルトの名無しさん
NGNG0893デフォルトの名無しさん
NGNGhttp://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=Exception&search=%B8%A1%A1%A1%BA%F7&sw=0
0894デフォルトの名無しさん
NGNGってツッコミは却下ですか?
0895デフォルトの名無しさん
NGNGexceptionてなに?具体的にどういうふうに作用するの?
参考書読んでもなにがなんだかさっぱりわからないです
0896デフォルトの名無しさん
NGNG自分でコード書いて動かしてみたか?
0897Calendar.getDefalt
NGNGジャワハウスさんのほうで、年月日時刻を取得するのに、
Calendar calendar = Calendar.getDefault(TimeZone.getTimeZone("JST"));
Date currentTime = new Date();
calendar.setTime(currentTime);
としてありました。Calendarの引数無しコンストラクタでは、JSTではなくGMTを返し、
日本時間より8時間ずれてしまうようです。
しかしながら、「Java 2 SDK 1.3 日本語ドキュメント 」には、
CalendarクラスにgetDefaultメソッドなんか載っていません。
これはいったいどういうことなのでしょうか?
下のクラスで追加されたメソッドなのでしょうか?
0898デフォルトの名無しさん
NGNG現在時刻の Calendar インスタンスがほしいなら
Calendar cal = Calendar.getInstance();
だけで良い。ちゃんと JSP になってないならマシンのタイムゾーン設定が
おかしいんだろう。
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNG具体的には君の事だよ、
君のように動作するから
catchしてあげてるじゃん?みんな
0902デフォルトの名無しさん
NGNGコンポーネントの配置が楽チンにできるのあります?
0903デフォルトの名無しさん
NGNGpublic class inner {
static public final int A = 55;
}
public static a getInstance(){
return new a();
}
public static void main(String[] args){
System.out.println("A = " + a.getInstance().inner.A);
}
}
このコードなんですがコンパイルできません。(jdk1.3)
publicインナークラスにアクセスするときはインスタンス経由では
アクセスしては行けないってことでしょうか?
0904デフォルトの名無しさん
NGNG0905デフォルトの名無しさん
NGNG>コンパイラで例外が発生しました。(1.3.0_02)
>プログラムと次の診断情報を添付の上、バグ報告を
>[email protected] 宛てにお送りください。
>よろしくお願いいたします。
こんなの始めてミターヨ
変なことはするな、ってことだ。
0906デフォルトの名無しさん
NGNGpublic class InnerTest {
class Inner {
int a = 5;
}
Inner getInner() {
return new Inner();
}
public static void main(String[] arguments) {
InnerTest test = new InnerTest();
//InnerTest.Inner inner = test.new Inner();
InnerTest.Inner inner = test.getInner();
System.out.println(inner.a);
}
}
0907903
NGNGでもね、途中に変数かますとちゃんとコンパイルできるし、実行結果も正しいのよ。
なんか納得いかん。
public class a {
public class inner {
static public final int A = 55;
}
public static a getInstance(){
return new a();
}
public static void main(String[] args){
a instance = a.getInstance();
System.out.println("A = " + instance.inner.A);
}
}
0908デフォルトの名無しさん
NGNGと同じ意味だよそれわ。
0909JCP勉強中
NGNG外側のクラスのインスタンスが必要です。
きっと正常動作ですよ( ^_^ )
0911903
NGNGそれはわかってます。実を言うとこのコードは僕が書いたものではなくて他の部署(海外)から
回ってきたものなのです。どうしてもコンパイルがとおらないので調べていたらこういう事だと分かりました。
とリあえずコンパイル通すのにgetInstance()をはずしていますが、これはjavacのバグなのでしょうか?
>>909
その問題とは微妙に違うと思うのですが。インナーからアウターをアクセスするのではなくて
外からインナーをアクセスするときの話です
0912デフォルトの名無しさん
NGNGインスタンス指定する書き方はやめれ。頼むから。
class Hoge {
static int foo;
}
Hoge hoge1 = new Hoge();
に対して
× System.out.println(hoge1.foo);
○ System.out.println(Hoge.foo);
0913デフォルトの名無しさん
NGNGそうすりゃ問題ないんだけどな
0914903
NGNGちなみにクラス変数だけでなくクラスメソッドに対しても同じ現象が起こります。
0915デフォルトの名無しさん
NGNG0916デフォルトの名無しさん
NGNGclass Hoge {
static int foo;
}
Hoge hoge1 = new Hoge();
Hoge hoge2 = new Hoge();
に対して、
System.out.println(hoge1.foo);
System.out.println(hoge2.foo);
ってなことをしたいときは、どうしたらいいんですか?
0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNGSystem.out.println(Hoge.foo);
System.out.println(Hoge.foo);
としてくれ。
0919デフォルトの名無しさん
NGNGpublic int foo;
}
public class Giko {
Giko() {
Hoge hoge1 = new Hoge();
Hoge hoge2 = new Hoge();
System.out.println( hoge1.foo );
System.out.println( hoge2.foo );
}
public static void main(String args[]) {
new Giko();
}
}
ってな感じのも、設計見直しですか?(;_;)
0920デフォルトの名無しさん
NGNG最初はインスタンスフィールドだったのをあとでクラスフィールドに
書き換えた場合、参照してるところを全部書き換えるの?
0921デフォルトの名無しさん
NGNG別に問題なさそうだけど?
0922919
NGNGん???
ってことは、>>916 の話は、
public class Giko {
class Hoge {
static int foo;
}
Giko() {
Hoge hoge1 = new Hoge();
Hoge hoge2 = new Hoge();
System.out.println( hoge1.foo );
System.out.println( hoge2.foo );
}
public static void main(String args[]) {
new Giko();
}
}
ってな感じのがダメだと言うことですか?
0923デフォルトの名無しさん
NGNGSunのLook and Feel Graphics Repositoryも見たんですけど、
他にもないのかなーと思いまして。。。
http://developer.java.sun.com/developer/techDocs/hi/repository/
0924デフォルトの名無しさん
NGNGtrim()
0925デフォルトの名無しさん
NGNG0926デフォルトの名無しさん
NGNGstaticの意味を理解していないのでは?
0927919
NGNG|_・) そのあたりをかいつまんで教えていただけませんか?
0928デフォルトの名無しさん
NGNGインスタンス一個に一個ずつあるのがインスタンスフィールド(=スタティックついてない奴)。
クラスで一個しかないのがクラスフィールド(=スタティックついてる奴)。
あるクラスを沢山newすると、newして出来たインスタンス一個ごとにインスタンスフィールド
は一個ずつ、別々のメモリ領域にある。でもクラスフィールドは、常に1個しかない。
OK?
0929919
NGNGstatic String SchoolName;
String name;
}
Student Giko = new Student();
Student Hiroyuki = new Student();
ってしたときに、
Giko.SchoolName と Hiroyuki.SchoolName は
クラスフィールドを指してることになるから、
Giko.SchoolName == Hiroyuki.SchoolName == Student.SchoolName
は同じ内容を指す。
Giko.nameとHiroyuki.nameはインスタンスフィールドを指すので、
Giko.name != Hiroyuki.name で、Student.name は器(?)だけを指す?
ということでしょうか?用語に間違いがあったら指摘お願いします。m( )m
0930デフォルトの名無しさん
NGNG合ってるよ。
0931891
NGNGでも、trim()って、ストリングの両端のスペースを除去するんですよね?
ストリング中のスペースやタブも除去したいんですが、どうすれば
いいのでしょうか?
0932デフォルトの名無しさん
NGNGString text = "...";
StringBuffer buffer = new StringBuffer(text.length());
for(int i=0; i<text.length(); i++){
if(! Character.isWhitespace(text.charAt(i))){
buffer.append(text.charAt(i));
}
}
text = buffer.toString();
0933デフォルトの名無しさん
NGNGソースが碌に読めません。
Cの知識は多少あるのですけれど。
どうすればよいでしょう?
・それでもひたすらソースを読む。
・とにかく書く
・入門書からやる
などなんでも良いんでアドバイスくださいまし。
0934デフォルトの名無しさん
NGNG結城さんの本がお勧めだよ。みんな良いって言うし、勿論
俺も良い本だと思う。
「JAVA言語で学ぶデザインパターン入門」ってやつ。
Javaのソースも必要最低限のレベルだし。
0935烏龍茶
NGNG改造する改造する。ある程度作れるようになったら 1 から
自分の考えたソースを書く。書く書く書く。そしてじっくり本を読む
また書く書く書く、本を読む、の繰り返し。たまに他人のソースも読む。
0936931
NGNG0937
NGNGデザインパターンなぞ低級霊がやるものです。
「俺って天才かな」と1度でも感じた事のある人は才能が削られてしまうので
読んではいけません。
アンチになりましょう。
0938age
NGNG急にMSDNが開けなくなったんです。
分かる人がいたら教えてください。
0939
NGNG0940デフォルトの名無しさん
NGNG書き間違えてるぞ。
ここはJavaの質問。
氏ね。
0941デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/developer/library/
こっちに同じのがあります.IEで見ましょう
0943デフォルトの名無しさん
NGNGランタイムエラーでアプリが突然終了し、↓の内容のログファイルができる
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION
どうしたらいいのかさっぱり見当がつかん。教えてくれ。
0944デフォルトの名無しさん
NGNGとりあえず日本語訳でもしとけ。
0945
NGNGVIOLATIONってなんだか判らないがACCESSってあるから
アクセス権の無い資源(多分ファイル)にアクセスしようとしたのでしょう。
0946デフォルトの名無しさん
NGNGhttp://www.google.com/search?num=100&hl=ja&q=+An+unexpected+exception+has+been+detected+in+native+code+outside+the+VM.+&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
http://www.google.com/search?num=100&hl=ja&q=+An+unexpected+exception+has+been+detected+in+native+code+outside+the+VM.+&btnG=Google+%8C%9F%8D%F5&lr=
0947デフォルトの名無しさん
NGNGおしい。アクセス権の無い資源とはメモリ領域のこと。
とりあえず環境と状況とそのときに出たもの書け。
0948924
NGNGそっか、途中にもあったりするのか。
ちなみに両端ならタブも除去できるよん。
お役に立てなくてスマソ。
0949デフォルトの名無しさん
NGNGそれを、アプレット上に1行で表示するにはどうしたらいいのでしょうか?
1文字ずつしか、表示したことないので、、
0950919
NGNGお礼が遅くなりました。どうもありがとうございました。m( )m
0951デフォルトの名無しさん
NGNGhttp://java.sun.com/j2se/1.3/ja/docs/ja/api/java/awt/Graphics.html
drawString() の y 値をループで増加。
0952943
NGNG日本語訳ありがとう。
>>946 >>947
環境はWindows98, jdk1.3
JOptionPane使ってダイアログを表示させる。
で、showXXXの戻り値を拾ってなんかやってるんだけど、
その最中にエラーが発生。
面白いのは、完全に同じことをやっても、こういうエラーが
出るときと出ないときがある。つまり、問題無くうまくいくときもある。
また、ログファイルなぞできずに、普通に強制終了する場合もある。
助けてくれ。
0953デフォルトの名無しさん
NGNGWindows98にて以下のプログラムを動作させました。
-----------------------------------------------------------------
import java.io.*;
public class CodeTest {
public static void main(String[] args) throws Exception {
String text1 = toEUC("隣りの客は良く柿食う客だ");
String text2 = toEUC("東京特許許可局");
String text3 = toEUC("バスガス爆発");
PrintWriter out =
new PrintWriter(
new FileWriter("tmp.txt"));
out.println(text1);
out.println(text2);
out.println(text3);
out.flush();
out.close();
}
private static String toEUC(String text) throws Exception {
return new String(text.getBytes("EUC_JP"));
}
}
-----------------------------------------------------------------
出力されたファイルを秀丸にて"EUC"で見ると以下の様になります。
-----------------------------------------------------------------
隣りの客は良く柿食う客だ
顛?探・・超・
バスガス爆発
-----------------------------------------------------------------
どうも、一部の文字が正しく変換されないようです。
例えば「山田タロウ」も「山田タ・薦」に成ってしまいます。
文字化けしない正しいコード変換のし方があれば教えて下さい。
0954デフォルトの名無しさん
NGNGString#String(byte[])は、与えられたバイト列をホストネイティブの
エンコーディングとみなしてStringオブジェクトを作る。
953の環境ではMS CodePage932がネイティブだろうから、EUCJPのやつ
を渡したら化けて当たり前。
正しく出力するには、java.io.OutputStreamWriterあたりがいいと思う。
0955953
NGNG----------------------------------------------------------------
import java.io.*;
public class CodeTest {
public static void main(String[] args) throws Exception {
DataOutputStream out =
new DataOutputStream(
new FileOutputStream("tmp.txt"));
out.write("東京特許許可局".getBytes("EUC_JP"));
out.flush();
out.close();
}
}
----------------------------------------------------------------
>>954さんのアドバイスを見て、以下を試しましたが、此方は文字化けしました。
----------------------------------------------------------------
import java.io.*;
public class CodeTest {
public static void main(String[] args) throws Exception {
OutputStreamWriter out =
new OutputStreamWriter(
new FileWriter("tmp.txt"));
out.write(toEuc("東京特許許可局"));
out.flush();
out.close();
}
private static String toEUC(String text) throws Exception {
return new String(text.getBytes("EUC_JP"));
}
}
----------------------------------------------------------------
何か僕は勘違いしているのでしょうか??
とりあえず、>954さん有難うございました。
レス数が950を超えています。1000を超えると書き込みができなくなります。