JAVAで文字列の文字コードを得る
ゲスト
ゲスト
ATOMRSS
  • コード求むID: 45
  • 登録日時:  2007/08/06 19:56
  • 最終更新日時: 2007/09/25 16:48
  • アクセス数: 5835
  • タグ:  java 文字コード 判別
  • codeなにがしブックマークに追加する 0 users
  • このページを del.icio.us に追加
  • このページをはてなブックマークに追加

JAVAで文字列の文字コードが分からない時に
文字コードを調べるにはどうしたら良いでしょうか?

    String encode getEncodeType("SJISの文字列");

としたら、"SJIS"が返って来るようにしたいです。

関連ソースコード・ノウハウッ!

JAVAで文字列の文字コードを判断する
haseken
haseken
JAVAで与えられた文字列から文字コードを判別して そのエンコ...
  • codeなにがしブックマークに追加する 0 users
  • このページを del.icio.us に追加
  • このページをはてなブックマークに追加

前へ 1 次へ

コメント

java.io.InputStreamReaderのコンストラクタの引数のString charsetNameに"JISAutoDetect"を入れることで一応自動認識するらしいですが、実際にやってみたところやはりうまくいきませんね。

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Test {
    public static void main(String[] args) throws Exception {
        String src "ソースカツ丼";
        String[] encoding new String[] "Shift_JIS", "EUC-JP", "UTF-8", "JIS" };
        
        for (int 0; encoding.length; i++) {
            byte[] new String(src).getBytes(encoding[i]); 
            InputStream is new ByteArrayInputStream(b);
            InputStreamReader isr new InputStreamReader(is, "JISAutoDetect");
            BufferedReader in new BufferedReader(isr);
            String in.readLine();
            System.out.println(encoding[i] ": s);
        }
    }
}

結果:Shift_JISとJISのみ正常

■G-PROJECT■ -日本語文字コードの判別 http://www.gprj.net/dev/tips/other/kanji.shtml

ServletとJSPにおける文字化けについて http://www.ingrid.org/java/jserv/i18n/corruptedchar.html

↑このあたりを参考にして判別コードを書くしかないのかもしれません。

  • GoodJob
  • 0

関連ソースコード・ノウハウッ!が登録されています。

JAVAで文字列の文字コードを判断する
  • GoodJob
  • 0

  • ゲスト
  • 3:ゲスト (質問者)
  • 2007/08/06 22:15

返信ありがとうございます!
hasekenさんのソースコードで問題無く動きました。

Shift_JISとJISのみ正常ですか・・・
実はWindows上のファイルしか試していないんですが、
そうなると"JISAutoDitect"を使っているhasekenさんのソースコードも
同じバグを抱えているんでしょうか・・・?

  • GoodJob
  • 0

hasekenさんのコードでもEUC-JPの「ソースカツ丼」は正常に認識できません。これはEUC-JPの「ソースカツ丼」はShift_JISの「・ス。シ・ケ・ォ・トミァ」に対応しているからである意味正常ではあるのですが、例えば秀丸エディタの文字コード自動認識機能だと正常に認識されます。

例えばShift_JISで認識したときに半角カナばかりで「・」や「。」が頻繁に混ざっているような場合や、EUC-JPで認識したときに全角カナが連続するような場合にはEUC-JPとして認識するというようなロジックがあると判別の精度は上がりそうです。

  • GoodJob
  • 0

  • ゲスト
  • 5:ゲスト (質問者)
  • 2007/08/08 11:28

返信が遅くなてすいません。
なるほど・・・今のままではちょっと要求に足り無そうなので、保留しておきます。
解説ありがとうございました。

  • GoodJob
  • 0

  • ゲスト
  • 6:ゲスト
  • 2007/09/25 16:48

Javaですべての文字コードはUNICODEになっています。
String().getBytesはUnicodeを指定したbyte配列を取得する関数です。


  • GoodJob
  • 0

前へ 1 次へ

コメントする

[block]から[/block]までの範囲はブロック表示されます。
部分的に目立たせたい時や、引用などにお使いください。

[code]から[/code]までの範囲は等幅表示されます。
ソースコードや設定ファイルの記述などにお使いください。

ゲスト投稿者:ゲスト:

関連ソースコード・ノウハウを登録

PDFLib | A library for processing PDF on the fly プレゼン公開・共有サイト handsOut.jp オープンタイプ株式会社 チーム・マイナス6% - みんなで止めよう温暖化

ブックマークコメント