KDP(電子出版)のメモ 急急如律令

Amazon Kindleダイレクト・パブリッシングでの電子出版や電子書籍の作成販売について、文章やイラストの作成や編集方法について書いています。

AozoraEpub3に文字コード自動判別機能を入れる作業

 前に文字コード判別したときはアンドロイドスタジオだったので、eclipseも同じようにできるかなと思ったができなかった。アンドロイド用とパソコン用では書き方が違うようだ。同じような書き方でできる方法もあるだろうけどよくわからない。

99nyorituryo.hatenablog.com

 


 なので、やり方としてはjuniversalchardet公式の方法に則ってやってみることに。

 

InputStream is = AozoraEpub3.getTextInputStream(srcFile, ext, imageInfoReader, textEntryName, txtIdx);

            InputStream is;
            String cs;
            cs = Detector.getCharset(is);
            if (encType.equals("")) encType =cs;

 公式のサンプルコードでは、ファイル名を指定するだけで読み込んでくれたり判別してくれるようだ。ただ、文字コードを指定して読み込むパターンもほしいので、読み込むまではしなくていい。

github.com

qiitaにもサンプルコードがあったがライセンスがわからないのでやめておいた。よく見ると公式サンプルを少し改変しただけのように見える。

qiita.com

android studioではかんたんだったライブラリの読み込みも、ファイルをダウンロードをする必要があったりして少し手間な感じである。

syslog.life

 

コマンドライン実行用AozoraEpub3のクラスを見ていくと。どこで、圧縮ファイルからテキストを取り出しているのかを見ていた。getTextInputStreamのクラスを使うとテキストをInputStreamを返すようなのだが、どうもそのままでは使いづらかった。なのでそれを書き換えて、getTextCharsetというのを作ってテキストファイルの文字コードをString形式で返すクラスを作った。

 

/** コマンドライン実行用 */
main

/** 出力ファイルを生成 */
getoutfile

/** 前処理で一度読み込んでタイトル等の情報を取得 */
getbookinfo

/** ファイルを変換
convertfile

/** 入力ファイルからStreamオープン
getTextInputStream

 

github.com