- - PR -
文字コードについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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との関連で文字化けしてしまうという原因)誰か解決方法のわかる方 //き込みのほうお願いします。 | ||||
|
投稿日時: 2004-10-28 00:46
ここまでわかってるなら、ソースコードのエンコードを変えてやればいいだけでは? Windowsなら、ソースをSJISにしてコンパイルすればOKのはずです。 | ||||
|
投稿日時: 2004-10-28 00:50
fedoraで開発しているのですが、ファイルエンコードをSJISにするということでしょうか?
| ||||
|
投稿日時: 2004-10-28 09:27
Linuxは使ってないですが、多分OS標準の文字コードはEUCですよね?
それなら、ソースコードはEUCでいいはずです。 もしくは、コンパイル時に、javacに-encoding オプションを付けて明示的にソースコードの文字コードを指定する手もあります。 | ||||
|
投稿日時: 2004-10-28 13:45
標準の文字コードはEUC_JPです。
ソースコード(ファイルエンコーディング?)はEUCにしてみたのですが それでもだめでした。 | ||||
|
投稿日時: 2004-10-28 20:06
思い込みが問題の原因というのは良く有る話です。 ファイルのエンコーディングが何なのか、ちゃんと確認しましょう。 私は kcc をよく使います。Fedora にも、たぶん有ると思います。 http://www.atmarkit.co.jp/flinux/rensai/linuxtips/309chkkcode.html [ メッセージ編集済み 編集者: はしもと 編集日時 2004-10-28 20:10 ] | ||||
|
投稿日時: 2004-10-29 01:22
kccコマンドありました。
どうやら私の書いているソースはShift_JISのようでした。 問題解決の方できそうです。 ありがとうございます。 | ||||
|
投稿日時: 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等も当然これが利用されるので、 ここが予想と違っていると問題が複雑化しますので注意が必要です。 |