- PR -

文字コードについて

投稿者投稿内容
user
常連さん
会議室デビュー日: 2004/05/20
投稿数: 41
投稿日時: 2004-10-27 23:53
文字コードについてわからない所があります。
プログラムでSQLを書きその値を引っ張ってくるという
プログラムなのですが、メッソドの中にそのSQL文を
埋め込み引数を文字として実行しています。
下にそのコードを書きたいと思います。

Beansを作りその中のメソッドをActionクラスで実行しています。


Beansの中のloadcountメッソド

public class SearchCount implements Serializable {
private String searchcount;

public SearchCount() {
}

public void loadCount(String firstword, String lastword) {

StringBuffer query = new StringBuffer();
query.append("SELECT count(shop.shopId ");
query.append("FROM shop,operator,users ");
query.append("WHERE (shop.shopfurigana BETWEEN" + " " + "'" + firstword
+ "'" + " " + "AND" + " " + "'" + lastword + "'" + ") ");
}

このメッソドをActionクラスで使います。
このときに文字が化けてしまいます。

Actionクラス内で、

//インポートした先ほどのSearchCountクラスを使います。
SearchCount count = new SearchCount();

String a,b = null;
a = "あ";
b = "い";

System.out.println(a);
//ここでSystem.out.println(a)をするとaが!)という文字列が表示されます。

count.load(a,b);

//ここで先ほどのSQl文が実行されshopテーブルのshopIdがカウントされ
//はずなのですが、文字(aとb)の方に"あ"と"い"が正常に入っていないため
//0件となってしまいます。文字コードの関係らしいということはわかっ
//たのですが(javaのString型はutf-8で作成されるためプログラム中の
//EUC_JPとの関連で文字化けしてしまうという原因)誰か解決方法のわかる方
//き込みのほうお願いします。






Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-10-28 00:46
引用:

//0件となってしまいます。文字コードの関係らしいということはわかっ
//たのですが(javaのString型はutf-8で作成されるためプログラム中の
//EUC_JPとの関連で文字化けしてしまうという原因)誰か解決方法のわかる方
//き込みのほうお願いします。




ここまでわかってるなら、ソースコードのエンコードを変えてやればいいだけでは?
Windowsなら、ソースをSJISにしてコンパイルすればOKのはずです。
user
常連さん
会議室デビュー日: 2004/05/20
投稿数: 41
投稿日時: 2004-10-28 00:50
fedoraで開発しているのですが、ファイルエンコードをSJISにするということでしょうか?
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-10-28 09:27
Linuxは使ってないですが、多分OS標準の文字コードはEUCですよね?
それなら、ソースコードはEUCでいいはずです。

もしくは、コンパイル時に、javacに-encoding オプションを付けて明示的にソースコードの文字コードを指定する手もあります。
user
常連さん
会議室デビュー日: 2004/05/20
投稿数: 41
投稿日時: 2004-10-28 13:45
標準の文字コードはEUC_JPです。
ソースコード(ファイルエンコーディング?)はEUCにしてみたのですが
それでもだめでした。
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2004-10-28 20:06
引用:
砂くじらさんの書き込み (2004-10-28 13:45) より:
標準の文字コードはEUC_JPです。



思い込みが問題の原因というのは良く有る話です。
ファイルのエンコーディングが何なのか、ちゃんと確認しましょう。
私は kcc をよく使います。Fedora にも、たぶん有ると思います。
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/309chkkcode.html


[ メッセージ編集済み 編集者: はしもと 編集日時 2004-10-28 20:10 ]
user
常連さん
会議室デビュー日: 2004/05/20
投稿数: 41
投稿日時: 2004-10-29 01:22
kccコマンドありました。
どうやら私の書いているソースはShift_JISのようでした。
問題解決の方できそうです。
ありがとうございます。
takamaro
大ベテラン
会議室デビュー日: 2004/10/12
投稿数: 100
投稿日時: 2004-10-29 01:27
Fedoraに関してはさっぱりなもので的を外してるかもしれませんがw

ググってみたところFedoraのネイティブ文字コードはUTF-8のようです。
砂くじらさんの環境が別の文字コードに変更されている場合もあるので
一概には言えませんが、今一度自分の環境をチェックされてみるのが
よろしいのではないかと思います。
それ以外にも使用しているエディタがFedoraネイティブの文字コードと
は別の文字コードを使用している可能性もあるので、これもチェックされ
たほうが良いかと思います。
ここまでは、砂くじらさんが作成したソースコード側の話でしすが、
これとは別に、Java側のファイルエンコーディング文字コードの初期設定
もチェックしてみる必要があるかもしれません。
試しに下記のコードをコンパイル・実行してみてください。

class FileEncodingCheck {
public staticv void main(String[] args) {
System.out.println(System.getProperty("file.encoding");
}
}

ここで出力される文字コード名がJavaに設定されているユーザ環境の
ネイティブ文字コードになります。
これが、-encodingオプション未使用時のコンパイル等でデフォルト
文字コードに利用されます。
アプリケーション実行時のSystem.out等も当然これが利用されるので、
ここが予想と違っていると問題が複雑化しますので注意が必要です。

スキルアップ/キャリアアップ(JOB@IT)