Carpe Diem

  Top > スポンサー広告> Java > Javaのコンパイルで文字コードによるエラー  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Javaのコンパイルで文字コードによるエラー

2011 - 06/08 [Wed] - 16:45

迷路の探索のプログラム(java)がネットにあったので試してみようと、Javaのコンパイルで

$ javac xxx.java

をしたら

この文字は、エンコーディング UTF8 にマップできません。

という警告が100個ほど出てきて、実際に実行してみたらエラー。

調べてみると、コンパイル時に文字コードが指定されていない場合、システム標準の文字コード(utf-8)としてコンパイルされるらしく、Shift-JISとかでプログラムを書いてあったりすると、こんな警告が出るらしい。

なので正しいコンパイルの仕方は

$ javac -encoding SJIS xxx.java

とすればOK。

あれ?でもそもそもUbuntuの場合文字コードってどうやって調べるの?と僕と同じことを思った人もいると思います。
そんな人は「kcc」というプログラムをインストールしてください。

$ sudo apt-get install kcc

そして文字コードを調べるときは次の様に打てば出てきてくれます。

$ kcc -c xxx.java
xxx.java: shift-JIS

ちなみに迷路のプログラムは動いてくれませんでした。そもそも動かなかったのは違う理由みたいです。。


追記:
どうせならと文字コードを変換する方法も調べてみました。
①geditで文字コードを変換して保存。
②iconvを使う

$ iconv -f <変換前の文字コード> -t <変換後の文字コード> <入力ファイル> > <出力ファイル>

で変換してくれるみたいです。iconvの対応文字コードが知りたければ

$ iconv -l

で一覧表示されます。

③nkfを使う
日本語で利用される文字コードの変換コマンドとしては、nkfが長く使われているらしいです。利用するにはnkfパッケージをインストールする必要があります。以下実行例。

$ nkf -w xxx.txt > yyy.txt (文字コードを自動判別してUTF-8に変換)
$ nkf -S -e xxx.txt > yyy.txt (Shift_JISからEUCに変換)
$ nkf -g xxx.txt (文字コードを自動判別して文字コード名を出力)



ソース:
Javaコンパイル標準オプション
文字コードを調べる方法
文字コードを変換するには

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。