みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

HDDの文字化けをconvmvを使って解消したい

最近knoppixからデータを外付けHDDに写し、windowsで確認すると中の日本語のファイルが文字化けしてしまうという問題が起きました。
再度knoppixで中身を確認するとちゃんとした日本語の名前になっていました。

よくよく調べるとknoppixとwindowsの言語が違う?のが原因ということがわかりそれを解決できるツール「convmv」までたどりつきました。

しかしここからの使用方法と手順が調べてもうまくいきません。
まずダウンロードしてファイルを展開しても実行できるようなファイルが無い。convmvの実行の方法がわからない。
とスタート地点で躓いています。
そもそもこのconvmvはwindows上で起動するのかknoppix上で起動するのかさえわかっていません・・・。

同じような作業をしたことのある方や、やり方のわかる方。

申し訳ありませんが、ご教授願います。

投稿日時 - 2011-08-01 08:35:13

QNo.6913343

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(15)

ANo.15

えっと、問題がどこでどう起きたか?そこから考えてみましょう。

簡単な話で、日本語を記録する上で、数種類の文字コードがあります。
同じ文字でもコード表が違えば異なる番号が与えられます。
(半角英数や一部の記号は同じ番号が維持されます)

この文字コードには古くはJIS,ShiftJISがあり、UNIX系OSではEUC-JPが使われていました。
その後、Unicodeという規格によって、各国個別に整備された文字コードを
統一したコード体系として運用するという方針に移行しました。

その結果、現在ではWindowsXP,Vista,7ではUnicodeが標準ですし
MacOSXでも、Linuxでも多くのディストリビューションでUnicodeが標準です。

KNOPPIXも6.4.4であればUnicodeになっているはずですが…
なんらかの原因で、KNOPPIXでWindowsのパーティションからデータをコピーする際に
UnicodeからUnicodeでのコピーが行われなかったと考えられます。

ただ、そういう条件なので、正確な状況はわかりません。
たとえば、Windows98,Meのパーティションからであれば
普通に文字コードの違いが生じると考えられます。

あるいは、外付けHDDをKNOPPIXがマウントする際に
Unjcode以外の文字コード設定でマウントしたという可能性もあります。
(普通無いはずですけど、KNOPPIXは使わないのでわかりません)


こういったファイルシステムへの適切な文字コード設定がなされなかった場合に
ファイル名を目的の文字コードに変換するのがconvmvの役割で…
またnkfは、そのファイル内の情報についての文字コード変換を行ないます。


convmvは、強力で便利なツールです。私もEUC-JP仕様のLinuxから
Unicode(UTF-8)仕様のLinuxに移行する際に、convmvでのファイル名変換を施しています。

ただ、このツールで重要なオプションが--notestです。
convmv -r -f sjis -t utf8 * --notest
というオプションは、指定したディレクトリー下のファイルのすべて…
この場合は、カレントディレクトリー下のすべてのファイルが対象となり

そのすべてをShiftJISで記録されていると指定して、UTF-8へと変換しファイル名を変更します。
ですから、この前後でファイル名を見れば変換されたかどうかがわかります。

ただし、これが適切な変換であるかは別問題です。


ですから、正しい使い方としては、最終的にUnicodeのファイル名として認識するためであれば
マウントオプションでiocharset=utf8を指定した上でマウントし…
--notestオプションをつけずに変換を行ないます。

notestはつまり、実際にファイルシステムに書きこむというオプションですから…
誤った設定で処理すれば、当然ファイルシステムの記録が混乱する恐れがあります。

--notestオプションを付けなければ、ファイル名が表示されます。
それが意図通りに表示されているのであれば、同じオプションにnotestを付けて
実際の処理を行なうという流れです。

既にやってしまったのであれば、それが正しかったことを祈りますが…
そうでなかった場合は、一度元の状態に戻し
その上で再度の変換を試みることになります。

ただし、不適切な変換で、不適切なファイル名が発生している恐れもあります。
その場合、完全に元のファイル名まで変換復元できるのかは知りません。

本来であれば、notestを付けずに行なうべきでしたし…
ln -sでシンボリックリンクを使ったシミュレーションも考えられたと思います。

マウントオプションに関する適切な設定がわからない場合は
同じファイルを作業用の3つのディレクトリーにコピーし

それぞれを異なるオプション指定で変換してみて…
それを、改めてWindowsで表示させることで正しい変換オプションを探せたと思います。

しかし、一度誤った変換を行なっているとしたら、問題はより複雑だと思います。

投稿日時 - 2011-08-02 00:06:45

ANo.14

> >これが、バックアップされたファイルが入っているパーティションですね。
> バックアップしたファイルが入っているのは別の外付けのHDDになります。
当方の質問に、本当に理解して回答しているとは思えません。

バックアップしたファイルの中のデータが文字化けしているのですね。
文字化けしたファイルをnkfプログラムで読み取って、文字化けを修正するのが目的なのですね。
そのためには、文字化けしたファイルが、Windows VISTAで読めないといけません。
そのためにその文字化けしたファイルが格納されているパーティションは、WIndowsで読めないといけません。
そのパーティションは、どんなフォマットですかと質問しているのです。

だんだんと、testdiskで失敗したのと同じような経過をたどってるようです。
目的は、何か、ではどうすればよいか、もう一度確認して今度は失敗しないようにして欲しいものです。

投稿日時 - 2011-08-01 22:16:30

ANo.13

> /dev/sdc1 1 182401 1465136001 c W95 FAT32 (LBA)

FAT32でフォマットされたパーティションですから、Windowsから読めますね。
よって、Windows VISTAからのWindows用のnkfプログラムを稼動して、コード変換ができるということです。
これが、バックアップされたファイルが入っているパーティションですね。

LINUX用のnkfプログラムはいらないことになります。

投稿日時 - 2011-08-01 21:38:41

補足

現状は
convmvのインストールが終わる

$ convmv -r -f sjis -t utf8 * --notest をする

質問にて確認中

です

投稿日時 - 2011-08-01 21:45:26

お礼

>FAT32でフォマットされたパーティションですから、Windowsから読めますね。
はい。問題ありません。

>これが、バックアップされたファイルが入っているパーティションですね。
バックアップしたファイルが入っているのは別の外付けのHDDになります。

>LINUX用のnkfプログラムはいらないことになります。
これで大丈夫でしょうか?

投稿日時 - 2011-08-01 21:42:22

ANo.12

> ええと・・・ebu2となってます(あってない気がする・・・)
ebu2というファイルシステムは知らないですね。
fdisk -l
で見てますか。
何か変ですよ。

投稿日時 - 2011-08-01 20:24:27

お礼

>fdisk -lで見てますか。
全然違うので見てました 
Device Boot Start End Blocks Id System
/dev/sdc1 1 182401 1465136001 c W95 FAT32 (LBA)

投稿日時 - 2011-08-01 20:50:05

ANo.11

knoppix6.4.4日本語版じゃうまくいったんだけどなぁ。

$ cd ..
はやめて直接コピー
$ sudo cp -r convmv /usr/bin

投稿日時 - 2011-08-01 19:05:37

お礼

回答ありがとうございます。
sudo cp -r convmv /usr/binをしてconvmvを使用できるようになり
$ convmv -r -f sjis -t utf8 * --notest を実行するとReady!と表示されました!
これで外付けHDDの中身も治っているのでしょうか?

投稿日時 - 2011-08-01 20:31:19

ANo.10

Wr5

knoppixでバックアップした時に、単純にcpコマンドでコピーしただけならばファイル内の文字コード変換は行われません。
テキストファイルのバックアップの際にnkfで変換しながらコピーした場合には文字コードが変換されているでしょう。

今回の場合は「ディレクトリエントリのファイル名の文字コード」だけの問題だと思いますが…。
# Linux詳しくない人がnkf等で文字コード変換しながらコピーはしないでしょう。

文字コード変換がされている場合、たいていはファイルサイズが変わります。
コピー前とコピー後でファイルサイズが違ってたりしませんか?
# 条件によっては文字コードが変更されてもファイルサイズの変動が見えないかも知れませんが。

投稿日時 - 2011-08-01 17:56:41

お礼

>今回の場合は「ディレクトリエントリのファイル名の文字コード」だけの問題だと思いますが…。
# Linux詳しくない人がnkf等で文字コード変換しながらコピーはしないでしょう。
ああ、なんだが深刻なバグとかじゃなさそうでよかった・・・
文字コード変換など一切せず、バックアップは外付けHDDにただコピーしただけです。

>文字コード変換がされている場合、たいていはファイルサイズが変わります。
うう~ん・・・元のサイズがどれだけだったか思い出せませんが・・・なんだか小さくなった気がします。

投稿日時 - 2011-08-01 19:52:58

ANo.9

簡単に言いますと、KNOPPIX6.4.4DVDでパックアップを採りました。
それは、どこに採ったのですか。
そのパーティションのフォマットは何ですか。
fat16かfat32かntfsかext2/ext3/ext4ですかということです。
それによっては、Windowsでは読めない、ext2/ext3/ext4は、KNOPPIXで処理しましょう。
そのためには、LINUX用のnkfを別に用意しないといけません。

投稿日時 - 2011-08-01 17:09:22

お礼

>簡単に言いますと、KNOPPIX6.4.4DVDでパックアップを採りました。それは、どこに採ったのですか。
外付けHDDにです。
>そのパーティションのフォマットは何ですか。
ええと・・・ebu2となってます(あってない気がする・・・)
>LINUX用のnkfを別に用意しないといけません。
用意してみましたが、どう使うものかまったくわかりません・・・。

投稿日時 - 2011-08-01 19:50:30

ANo.8

> つまり今使っているwindowsにLINUX用のnkfというものをダウンロードすれば治るということでしょうか?
違います。
ファイルシステムにより、ext3/ext4にフォマットしたパーティションにバックアップを採っていれば、それを読めるのは、Windowsでは読めません。
よってLINUX(今回の場合KNOPPPIX6.4.4DVD)からどうしても読む必要があります。
そのためには、LINUXで稼動できる、LINUX用のnkfプログラムをKNOPPIX6.4.4DVD環境で稼動するということです。

> つまりこれらの操作をすれば治るということでよろしいのでしょうか?
そうです。
nkf -s infile > outfile
このコマンドで、infileという入力ファイルは、文字化けのファイルで、これは自動的に内部コードを見分けて、outfileにシフトJISコードに変換されたものが、できるということです。

ただし、ファイルが大量の場合は、いろいろな手で一括して変換させる技術もあります。

LINUX用nkfは、下記でダウンロードできます。
http://sourceforge.jp/projects/nkf/releases/

nkf-2.1.1.tar.gz
の解凍は、
tar -xzf nkf-2.1.1.tar.gz

使い方等は、解凍後、「READ**」等に記載されています。

投稿日時 - 2011-08-01 16:57:59

お礼

>LINUX用nkfは、下記でダウンロードできます。
ダウンロードしてみました。
回答した中身からvistaと書いてあるものをクリックしてみましたが反応がありません・・・。
同じ中にあったメモ帳を見てみましたが・・・正直ちんぷんかんぷんです・・・。
知識がなくてすみません。

投稿日時 - 2011-08-01 19:47:55

ANo.7

KNOPPIXでバックアップした際、ファイルシステムは、FAT16かFAT32であれば、nkfプログラムが有効ですが、もし、ext3/ext4のファイルシステムであれば、LINUX用のnkfをダウンロードする必要があります。

投稿日時 - 2011-08-01 14:20:54

お礼

>KNOPPIXでバックアップした際、ファイルシステムは、FAT16かFAT32であれば、nkfプログラムが有効ですが、もし、ext3/ext4のファイルシステムであれば、LINUX用のnkfをダウンロードする必要があります。

つまり今使っているwindowsにLINUX用のnkfというものをダウンロードすれば治るということでしょうか?

投稿日時 - 2011-08-01 15:49:44

ANo.6

一般的に、WindowsとLINUXでは、内部文字コードが異なるため、ファイル全体を変更させたい場合は、nkfがよいようです。

LINUXで書かれたテキストイメージの場合は、改行コードが異なるためにどうしてもうまくいかないときもあります。
どんなファイルが多いのかによります。
ワードや、エクセルで書かれたファイルであれば、nkfが有効です。

ただ、今回の場合だと、元は、Windowsのファイルをバックアップしたということなので、そのままnkfプログラムで返還した方が簡単に元のWindowsファイルに戻ると思います。

投稿日時 - 2011-08-01 14:14:03

ANo.5

具体的なことが何も分かっていない場合は、Windows上で動く、nkfというプログラムが適当だと思います。
コード変換は、いろいろなsoftがあります。
nkfは、下記のところからダウンロードしてくるとよいと思います。
http://www.vector.co.jp/soft/win95/util/se295331.html

使い方は、
http://www.nurs.or.jp/~sugi/nkf.htm
シフトJISへ
nkf -s infile outfile
ファイルへ書くときは
nkf -s infile > outfile

これが一番簡単です。

投稿日時 - 2011-08-01 13:50:28

お礼

解答ありがとうございます。

>具体的なことが何も分かっていない場合は、Windows上で動く、nkfというプログラムが適当だと思います。
はい。とにかく「バグった」としか考えられていないPC音痴ですのでこっちのほうが簡単ならこっちで試してみようかと思います。
>シフトJISへ
>nkf -s infile outfile
>ファイルへ書くときは
>nkf -s infile > outfile
ええと、つまりこれらの操作をすれば治るということでよろしいのでしょうか?

投稿日時 - 2011-08-01 15:48:43

ANo.4

>フォルダを右クリックでOpen in terminal で起動し
>$ sudo cp -r convmv-1.14 /opt

フォルダを右クリックでOpen in terminal で起動したら、
$ cd ..
$ sudo cp -r convmv-1.14 /opt

投稿日時 - 2011-08-01 11:43:22

お礼

回答ありがとうございます。

>フォルダを右クリックでOpen in terminal で起動したら、
>$ cd ..
>$ sudo cp -r convmv-1.14 /opt

cd . .を打ち込んでエンターをしたら次の行にいってsudo cp -r convmv-1.14 /optとうちエンターをすると
cp: target `opt' is not a directory
と出ます。これは成功していないようで、なにかエラーのようなことを言われている気がします。何度やってもこうなってしまいます・・・

投稿日時 - 2011-08-01 15:45:46

ANo.3

> windowsで確認すると中の日本語のファイルが文字化けしてしまうという問題が起きました。

ファイル名だけではなくて、各ファイルの内容も文字化けしているのではないですか?。

knoppixファイル(文字コード UTF8)が Windows(文字コード sjis)で化けているのが原因です。
convmv なら
convmv -r -f utf8 -t sjis * --notest
で変換できます。
参照サイト:ファイル名の文字コードを変換するには
http://www.geocities.jp/code_air_edge/HP/convmv.html
---
ただし、私の場合は コピー後に文字コード変換するのではなくて「ファイルをコピーするときに文字コード変換する」というソフトを使用して行います。
具体的にはWindows に フリーの定番ソフト winscp をインストールして「ファイル名をUTF8でエンコード」を「オン」にしてコピーします。
添付画像は winscp の実行結果です。
エクスプローラ感覚で使用できます。
文字化けすることなく日本語表示されています。

投稿日時 - 2011-08-01 10:47:43

ANo.2

こちらの「convmv」ならLinux用ですね。
http://j3e.de/linux/convmv/
convmv-1.14.tar.gzをダウンロードしたなら。
展開してできたフォルダを中身と一緒に、ターミナルを起動して、/optにコピー。
$ sudo cp -r convmv-1.14 /opt
/usr/binにシンボリックリンクを貼る。
$ sudo ln -s /opt/convmv-1.14/convmv /usr/bin/

これで、convmvをターミナルから実行できるようになる。
使い方は
http://j3e.de/linux/convmv/man/

投稿日時 - 2011-08-01 09:34:09

お礼

回答ありがとうございます

ダウンロードしデスクトップに保存したのち展開し,出てきたフォルダを右クリックでOpen in terminal で起動し
$ sudo cp -r convmv-1.14 /optをすると
cp: `convmv-1.14' を stat できません: そのようなファイルやディレクトリはありません
と出てしまいます。どうしてでしょうか・・・

投稿日時 - 2011-08-01 10:13:16

ANo.1

Wr5

>よくよく調べるとknoppixとwindowsの言語が違う?

言語ではなく…文字コードでは?

>まずダウンロードしてファイルを展開しても実行できるようなファイルが無い。

convmv-1.14/convmv がperlのスクリプト…の様ですが……実行属性付いていませんか?
knoppixで適当なところに展開して、フルパスで指定して実行すればよいかと。
# 同じ場所にMakefileがあるので、make installで一応インストールはされます。
# が、knoppixだと…インストールしても再起動したらなくなっているかも知れませんねぇ…。

>そもそもこのconvmvはwindows上で起動するのかknoppix上で起動するのかさえわかっていません・・・。

perlスクリプトですからもしかしたらWindowsでも動作するかも知れませんけど…どうですかねぇ……。
たぶん、参考にしているであろうページがLinux向けになっているでしょうからWindowsでやるのはやめておいた方がいいでしょうけど。
# Perlのインストールがいきなり壁でしょうしねぇ…。

投稿日時 - 2011-08-01 09:15:20

お礼

はやい回答ありがとうございます。
>knoppixで適当なところに展開して、フルパスで指定して実行すればよいかと。
なるほど knoppixから実行するんですね フルパス指定で実行とはクリックして実行と違うのですか?
>knoppixだと…インストールしても再起動したらなくなっているかも知れませんねぇ…。
変更が保存されないということでしょうか。knoppix上では何を変化させても残らないのかな。。。
>たぶん、参考にしているであろうページがLinux向けになっているでしょうからWindowsでやるのはやめておいた方がいいでしょうけど。
ほとんどがLinuxでのやり方ばかりでした。

とりあえず現状で knoppixでconvmvの最新版をダウンロードしました。
引き続き回答をお待ちしております。

投稿日時 - 2011-08-01 09:27:05

あなたにオススメの質問