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で変換するより文字化けする文字の量が少なかった。
(※肝心の変換部分は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で変換するより文字化けする文字の量が少なかった。
コメント
コメントを投稿