諸事情により、このへんのゲームは動くよ。海中ピラミッド海中ピラミッド2他もだいたい動くかんじ。動かないアプリがあったら教えてね。文字化ける文字を化けさせるiアプリをAndrod上で動作させるため、SJIS(Shift_JS)のテキストファイルを読み込もうとしている。これには文字化けの問題がある。Androidは一旦置いとく。実験SJISのテキストファイルをつくるまず元となるテキストファイルを用意する。文字コードはutf-8とした。hoge.txtアンドロイド☆イズ☆デッドこのファイルの文字コードをSJISに変更する。hoge.sjis.txtUTF-8で読み込むInputStreamReaderに文字コードを指定する。指定しないとデフォルトの文字コードを使う。Androidも(キミのmacも)デフォルトはutf-8だ。lineをそのままUTF-8文字として出力しても文字化けして読めないんだけど、そのバイト列としても、なんだかおおよそ文字とは思えないものがでてくる。もとの文字列のバイト列とくらべてみよう。000001bである。utf-8として読み込んだ文字列のバイト列にはEFBFBDというものが繰り返し出現することがわかる。考察InputStreamReaderがhoge.sjis.txtの内容を読むときに、utf-8の文字が来ると期待するため、その範疇にない文字を「表現できない文字」としてEFBFBDに置き換えてしまっている。JavaのStringになった時点で、元の情報を失う。結論InputStreamReaderで文字化けしたStringを、元のbyte列に戻すことはできない。それゆえ、他の文字コードに変換することもできない。iアプリとAndroidiアプリではデフォルトの文字コードがSJISだった。Androidではutf-8。InputStreamReader(is);とか、"いやまずiアプリって何".getBytes();とかやったときに使われる文字コードがiアプリとAndroidで異なる。共有2014年6月2日月曜日Classファイルの文字コード30億のデバイスで化けないJava。Shift_JISとSJISは必ずしも一致しなかった。文字コードはUTF-8に統一されつつあるが、未だに悩ましい問題の一つだ。JavaのClassファイルとAndroid.javaファイルはコンパイルすると.classファイルになる。AndroidのDalvikVMではこのClassファイルをDxにより、1つのclasses.dexなるファイルにまとめる。Classファイルの文字コードJavaファイルを書くときはその文字コードを気にすることもあるだろう。(とはいえUTF-8一択だ。「気にする」というのはUTF-8になっているかどうかを気にするのだ)しかしClassファイルの文字コードを気にしたとこはあるだろうか?Shift_JISでエンコードされたJavaファイルをClassファイルにコンパイルしたとしよう。クラスローダーはこのClassの文字コードをどのように判断しているのだろうか。Classファイルにおいて文字列の文字コードは統一されているのだ。UTF-8っぽいやつClassファイルのなかで文字列は「UTF-8っぽい」文字コードで表現される。それゆえ、Javaはコンパイル後に文字化けすることがない。指定するタイミングJavaファイルをClassファイルにコンパイルするときに、Javaファイルの文字コードを指定してあげる。javacのオプションに-encodingがある。共有2014年5月21日水曜日iアプリをAndroidで動かしたい追記:iアプリを動かすAndroidアプリ、公開しました。CLDCで規定されているAPIと、ユーザインターフェースやHTTP通信などiモード対応機種用に作成されたiアプリAPIにより構成されています。(Seriously)iアプリを知らない奴がいるのか。iアプリはiPhoneで動くアプリのことではない。iOSアプリとかAndroidアプリとかのガラケー版な。(そういう言い方は気に食わないがな)私が今回の記事で扱うのはゲームのみな。iアプリをAndroidでやるか記事タイトルをみて、せっかくスマホにしたっていうのに、Androidでiアプリやらないよ。いまは、パズドラ、モンストだろ。Androidでiアプリはやらない理由として以下を挙げておく。iアプリやるより、スマホのゲームやるよねUIが変わっちゃうよね(スマホにキーパッドはない)iアプリはしょぼい。確かにファミコン以上、スーファミよりしょぼいクオリティのゲームが多かった。短絡的に判断してはならない。iアプリの全盛期には、スーファミもいや!プレステも、いやや!Wiiも発売された世界で作られたのである。それゆえアイディアとして尖ったもの、洗練されたものが(なかには)あった。非常に(いやまじで非常に)限られたリソースをいかに効率的に使うか、という技術的な問題を乗り越えて作成された。