java apache commons io を使って文字コードを変換する方法

java apache commons io を使って文字コードを変換する方法
(※肝心の変換部分はapache commons ioは使っていませんが。。。)
下記の例では「utf8.txt(文字コード:UTF-8)」を「sjis.txt(文字コード:Shift_JIS)」
に変換しています。
-------------------------------------------------------------------
        String fromCharset = "UTF-8"; // 変換元文字コード
        String toCharset = "Shift_JIS"; // 変換先文字コード

        // UTF-8 のファイルを読み込んでbyte配列へ
        byte[] inData = FileUtils.readFileToByteArray(new File("utf8.txt"));

        // UTF-8 のbyte配列からShift_JISのbyte配列へ
        byte[] outData = new String(inData,fromCharset).getBytes(toCharset);

        // Shift_JISのbyte配列を書き込み
        FileUtils.writeByteArrayToFile(new File("sjis.txt"),outData);
-------------------------------------------------------------------
使ったライブラリ)commons-io-2.4.jar

実験的にwikipediaのトップページの文字列データをutf8.txtで保存
 sjis.txtができたがいくつか文字化けした文字があったが
基本的なテキスト文章であれば大丈夫みたいです。
「・」→「? 」
「العربية」→「???????」


注意点としては
「FileUtils.readFileToByteArray」では、すべてのファイルの内容をbyte配列
に格納しているために、ファイルサイズが大すぎる場合は使うべきでない

また、有名な文字コード変換コマンドとして「nkf」があるので
そちらを使ったほうがいいかもしれない。
そちらを使ったほうが、Javaで変換するより文字化けする文字の量が少なかった。

コメント

このブログの人気の投稿

ubuntu18.04でカーネルのダウングレード

Android端末(OS:5.1.1,F-01H)でメール送信もできるWebサーバを作る