Hatena::ブログ(Diary)

Palm84 某所の日記 RSSフィード Twitter

2011.8.17-(水) ♪アナターはコミンテルンのほんのイチブしかシラナーイ〜

KNOPPIX でファイル名が文字化けしたでござるの巻(FAT編)

| 19:12 | KNOPPIX でファイル名が文字化けしたでござるの巻(FAT編)を含むブックマーク

2011.8.18 原因・対処とか間違ってました。すみません。。。

「KNOPPIXで文字化け... orz」のスクリーンショット

KNOPPIX など最近の Linux LiveCD はアイコンクリックでマウントできて便利になってますが、USBメモリなどFAT(16/32) パーティションでは日本語ファイル名が文字化けすることがありますねんなお話。

USBメモリなどFATを使用する場合は、確認のために事前にWindows上で日本語名なファイルを保存しておくことを強くおすすめ致す次第と存じ奉りまする。。

尚、Linuxユーザーにとっては超基本的言わずもがなことゆえ知らない人は全く知らない、関係ない人には全く関係ないことなのかもしれませぬー。

【注意】フォーマットが FAT の場合でござる!

ここに書いてる例は、USB HD(USBメモリ)などのフォーマットが FAT(FAT32/FAT16) の場合でござりんす。フォーマットがNTFSの場合は英語版OSを除き文字化けは殆ど起こらないと思われます。

ファイル名の文字コードとエンコード

インターネット上で「Windows のファイル名の文字コードは SJIS が使用される」という情報が散見されますが、正確には、Windows2000, WindowsXP などの NT 系 Windows カーネルでは、Windows カーネル内部では、ファイル名は全て Unicode で扱われており、状況によって SJIS への変換が行われます。

IBM Linux at IBM | Windows のファイル名の文字コードについて

NTFSは Unicode ですがUSBメモリなど FAT(16/32) では Shift_JIS によってエンコードされとるわけですな。

参考リンク

問題が出るパターン

【2011.8.18 追記】原因については浅薄な勘違い、というかよくわかってませんでした。すみません。。。

NTFSとFATは同じではござらぬ!

codepage=932 で一応おkですが正確には codepage=cp932 です(汗)。

Windows でFATに保存したファイル名が KNOPPIX で文字化け
原因

マウント時に codepage=932 指定されない。cp437, cp850 などで処理される(?)

マウント時に codepage=932, iocharset=utf8 指定されない。

対処

iocharset=utf8(及び codepage=932)を指定して再マウントすればおk

KNOPPIX でFATに保存したファイル名が Windows で文字化け

NTFS上でちゃんと表示されてたんでFATへそのままコピー。KNOPPIX 上でおk、されど Windows で見たら文字化けしたがじゃ。

原因

FATのマウント時に codepage=932 指定されない。cp437, cp850 などで保存される(?)。しかし Windows 上では cp932 で処理されるため。

マウント時に codepage=932, iocharset=utf8 指定されない。

対処

同じPCでやり直す場合は・・・

  • KNOPPIX 上で表示が正常なNTFS領域へコピー
  • or ネットワークでWindowsマシンへコピー
  • or USBメモリを KNOPPIX 起動前にNTFSフォーマットしておいて、コピー
  • or FATなUSBメモリなら iocharset=utf8(及び codepage=932)を指定にて再マウントしてからコピー(※ 後述)

或いは、移動先の Windows が起動できるPCで KNOPPIX 起動させてとか。

  • (Windows 上では文字化けでも KNOPPIX上では正常な筈なので)USBメモリ内のファイルを内蔵HDなどNTFS領域へコピー

再マウントするには

KNOPPIXを使う前に・・・

確認のために事前に Windows 上で使用するUSBメモリなどに日本語名のファイルを保存しておきませう。

Windows で保存した日本語名ファイルが正常表示されない場合は再マウントが必要になります。

  1. FATパーティションのマウントポイント(or デバイス名)を確認 - /media/sdx1 など
  2. アンマウント(マウント解除)する
  3. codepage=932,iocharset=utf8 を指定して再マウント

※ KNOPPIX ではデバイス /dev/sdb1通常マウントポイント /media/sdb1 にマウントされる。小容量USBメモリなどでパーティションが切られていない(大容量FD形式)の場合は最後の数字(パーティション番号)はありませぬ。

【追記】 /media/<ボリュームラベル名> の場合もありますな。

まず、マウントポイント名の確認!

hogehogeのスクリーンショット

下記はデバイス /dev/sdb1、マウントポイント /media/sdb1 の場合です!

コンソール(ターミナル・エミュレーター)でコマンド打つべし!

左下のアイコン パネルアイコンのスクリーンショット またはメニューから Knoppix メニューのスクリーンショット

基本的には・・・

-o utf8 のみの追加指定でおkかもしれません。念のため基本通りやった方がいいかと思いますけど。

  • 一例:
$ sudo umount /media/sdb1
$ sudo mount -o utf8 /media/sdb1

LXTerminalのスクリーンショット

  • アンマウント(マウント解除)
$ sudo umount /media/sdb1
  • オプション指定してマウント
$ sudo mount -t vfat -o codepage=932,iocharset=utf8,shortname=winnt,uid=knoppix,gid=knoppix /dev/sdb1 /media/sdb1

※ KNOPPIX では一般ユーザでもマウントできますが、オプションの変更・追加は sudo を使い root 権限で実行するナリ。

  • shortname=winnt - 英字の大文字小文字をそのままで
  • uid=knoppix,gid=knoppix (uid=1000,gid=1000) - root 権限でマウントしてるので指定しないとファイル・マネージャなどで削除など変更処理ができなくなる
参考ページ
【追記】コマンド打ったのに文字化けしたままやん!orz な場合

バージョン 7.x で確認してみまするとファイルマネージャーに設定がなかなか反映されないことがある模様です。

※ 確認のために事前に Windows 上で使用するUSBメモリなどに日本語名のファイルを保存しておきませう。

  1. ファイルマネージャ開いた状態でF5キー押す(更新する)
  2. ファイルマネージャをも一遍開きなおす
  3. ファイル名の日本語がキタ〜

と、なりました。(ならなかったらすみません。orz)

バージョン 6.7.1(6.4.4) と 5.3.1 の違い

【追記】産総研版 7.0.2DVD、ライブCDの部屋さん版 7.0.3CD でも FAT は文字化けしてました

6.7.1(6.4.4)

【注意】産総研版の例です。ライブCDの部屋さん版 6.7.1, 7.0.3, 7.2.0 では文字化けは発生しませんでした。

FATのマウント時に codepage=932, iocharset=utf8 が指定されないので下記両方のパターン発生。

  • Windows で保存したファイル名が KNOPPIX で文字化け
  • KNOPPIX で保存したファイル名が Windows で文字化け

FATで日本語ファイル名を扱う場合は codepage=932, iocharset=utf8 指定で手動マウントが必定やき

5.3.1

基本的にはNTFS同様FATでも問題ないことが多いです。しかし、日本語ファイル名のないFATをマウントする際に codepage=932, iocharset=utf8 が指定されない場合があるがじゃ。

  • KNOPPIX で保存したファイル名が Windows で文字化け

確認のため事前に Windows 上で日本語名ファイルを保存しときませう。

オプションなどを確認

コンソール(ターミナル・エミュレーター)でコマンド打つべし!

デフォルトで指定される mount のオプションを確認するには cat /etc/fstab と打ちます

KNOPPIX日本語版ではファイル /etc/fstab が起動時に編集されるのでこのファイルの内容を確認。6.4.4 では codepage が指定されません。

knoppix@Microknoppix:~$ cat /etc/fstab 
# DEFAULT BASE FSTAB, UNCONFIGURED
proc       /proc         proc       noauto             0 0
sysfs      /sys          sysfs      noauto             0 0
# Added by KNOPPIX
/dev/sr0 /media/sr0 auto ro,noauto,users,exec 0 0
# Added by KNOPPIX
/dev/sr1 /media/sr1 iso9660 noauto,users,exec 0 0
# Added by KNOPPIX
/dev/sda5 /media/sda5 vfat noauto,users,exec,umask=000,shortname=winnt,uid=knoppix,gid=knoppix 0 0
# Added by KNOPPIX
/dev/sda1 /media/sda1 ntfs noauto,users,exec,umask=000,uid=knoppix,gid=knoppix 0 0
# Added by KNOPPIX
/dev/sdb1 /media/sdb1 vfat noauto,users,exec,umask=000,shortname=winnt,uid=knoppix,gid=knoppix 0 0

マウント済の状態を確認するには mount と打ちます

knoppix@Microknoppix:~$ mount
rootfs on / type rootfs (rw,relatime)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
/dev/sr1 on /mnt-system type iso9660 (ro,relatime)
tmpfs on /ramdisk type tmpfs (rw,relatime,size=2097152k)
/dev/cloop on /KNOPPIX type iso9660 (ro,relatime)
unionfs on /UNIONFS type aufs (rw,relatime,si=9044977c,noplink)
unionfs on /home type aufs (rw,relatime,si=9044977c,noplink)
usbfs on /proc/bus/usb type usbfs (rw,relatime)
tmpfs on /UNIONFS/var/run type tmpfs (rw,relatime,size=10240k)
tmpfs on /UNIONFS/var/lock type tmpfs (rw,relatime,size=10240k)
tmpfs on /UNIONFS/var/log type tmpfs (rw,relatime,size=102400k)
tmpfs on /tmp type tmpfs (rw,relatime,size=2097152k)
udev on /dev type tmpfs (rw,relatime,size=20480k)
tmpfs on /dev/shm type tmpfs (rw,relatime,size=2097152k)
devpts on /dev/pts type devpts (rw,relatime,mode=1777)
cgroup on /cgroup/cpu type cgroup (rw,relatime,cpu,release_agent=/usr/sbin/cgroup-remove)
/dev/sdb1 on /media/sdb1 type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp850,iocharset=iso8859-1,shortname=winnt,errors=remount-ro)

6.4.4 では codepage=cp850,iocharset=iso8859-1 となっとりますですな。このままだと日本語ファイル名は KNOPPIX上では正常でもWindows上で文字化けしてしまいます。

5.3.1 では

必ずではないけどまっさらのUSBメモリなどでKNOPPIX上では正常・Windowsで文字化け状態となることもがあります。

その場合のオプションはこんなかんじでした。

/dev/sda1 on /media/sda1 type vfat (rw,nosuid,nodev,uid=1000,gid=1000,fmask=0000,dmask=0000,codepage=cp437,iocharset=iso8859-1,shortname=winnt)

この例では ,codepage=932,iocharset=utf8 で再マウントすればおk!でした。

chumachuma 2011/10/23 18:39 XPのデータを救出するのに外付けHDにデータをコピーした際文字化けしてしまいましたが、このページに書かれている
$ sudo mount -o utf8 /media/sdb1
で解決しました。

KNOPPIXは、6.4.4でした。

どうもありがとうございました。

palm84palm84 2011/10/23 23:28 うぅ、お役に立ててうれしいです。。。

nyanchunyanchu 2011/12/27 10:52 先日、起動時のエラーループに陥ったxp機からデータを救うべく、kinoppix CD(6.7.1)を使ったところ、まんまと文字化けしましたが、こちらで学んだ手動マウントで、見事に解決しました。

適切な示唆をいただき、ありがとうございました。

palm84palm84 2011/12/29 02:32 ご報告ありありーです。

ぴろこぴろこ 2012/11/14 21:34 XPが固まってしまいました。超初心者なのですが、こちらのおかげで、なんとか必要なデータが取り出せました。ありがとうございます。
KNOPPIX7ですが、長い方を打ち込むと、いろいろ文章が出て、文字化けしたままでしたが、
$ sudo mount -o utf8 /media/sdb1で解決しました。
理由はもうわからなくていいや・・・(/_;)?ほんとうにありがとうございました<(_ _)>

palm84palm84 2012/11/16 05:48 遅レスすみません。。。
これは気付いてませんでした。orz

7.x だとファイルマネージャ側での設定の反映が遅いことがある?
ようなかんじですね。(ls コマンドはおk)
端末でコマンド打つだけではだめで、
ファイルマネージャ開いてF5キー押して更新&開き直しで日本語ファイル名が表示されました。

ご報告thanks!であります。

しのはらしのはら 2012/11/22 15:28 いやー!助かりました。

Win7のバックアップからデータを戻していたのですが、漢字のファイル名が全部文字化けしていました。
変換ツールを探して、試したのですが、全滅。
これで、今後の事もあるので、数日間何とかならないものかと悩んでいました。
もう諦めて、ファイル名を手打ちで入力しようかと考えていたところでした。
もうこれで最後と思い、今日、KNOPPIX、ファイル名、文字化けで検索したところ、このページにたどり着きました。
私の場合は、USBメモリをNTFSでフォーマットしてコピーしたところ、漢字も文字化けせずにコピーができました。
試しに、FAT32で、コマンドでのマウント、オプションを指定する方法でトライしたら、これもうまくコピーができました。
知識って宝ですね。

NOPPIX6.7.1で使用しました。
コピー先のOSはWindows8Pro64bitでした。

本当にありがとうございました。

palm84palm84 2012/11/23 02:45 ご報告アリガトございますです。
http://siminpc-kitakyushu.com/index.php?QBlog-20121122-1
記事拝見しました。

あと、LiveCD は他にもたくさんあるので試しておかれると
後で役に立つかもしれません。
・Ubuntu 最新版 - 最近のPCならいいかも。でも古いPCでは激重
・Puppy Linux - 古いPCでも動く、ただ操作が独特
とかとか。
まぁ相性みたいなのがあるのでどれが最善なのかは一概に言えませんけど。

holyholy 2013/03/02 13:28 とても解り易い解説有難うございます。

昨年の夏に外付けHDDがクラッシュ(物理的じゃない)してから、ネット上のあらゆるソフトを試しましたがダメでした。

このHPを見つけ試したところ一発解決でした!
Windowsやdos以外は使った事がなく不安でしたが大丈夫でした!感謝です!!

どうも有難うございました。

palm84palm84 2013/03/03 07:10 他の人が書けばもっとわかりやすくなるんではと思ったりもしてますが。orz
KNOPPIX はいまいちなとこもあるけど、Winユーザーのことも考えてるようなとこがあるようなないような点がいいかも(いまいち曖昧ですがw)

ご報告アリガトございマース

りんりん 2013/03/21 17:58 現在Macユーザーです。MBA2012 OSX10.8.3 です。bootcampでWin8Pro使用です。Win8のディスクの管理から、知識不足のせいで、3番目の空き領域を初期化する際に、Win8以外の領域をプライマリー(ベーシック)ディスクからダイナミックディスクに変更してしまいました。結果、MacもWinも起動せず。外付けHDにインターネットインストールしたMac側からのアプローチはすべて失敗。Win側からのアプローチするしかない、でも、どうしよう...で昔Winの復旧のために焼いたKNOPPIXの5.3を思い出してCD起動...エ、エラーです。それなら、と最新版を確認したら7.0.2になっている!、で早速焼き直して再度CD起動、今度はなんのエラーもなくきれいなデスクトップへ。rootでOPENしたファイルマネージャでFATへコピーするも、念のためと外付けHDD上のMacで試すとすべて文字化け使用不能...どうしよう?、みたいな形でここに来ました。今回どうしても救出したかったファイルは、60GBはくらいのFusion5(VMWARE)のWinXPの仮想ディスク。通常のファイルは日本語問題なかったのですが、この仮想ディスクの内部ファイルが、KNOPPIX側から見ると「仮想ディスク」となっているのに、Mac側からは変なアラビア語みたいになってしまってました。UTF-8 で FAT をマウントした後も、残念ながら文字化け...その変な文字がすべて???に変わっていました。なぜかKNOPPIX側から見ても同じ???でした。やっぱりダメなんだ...そう思いながら念のためFusion5で開くと...なんと!無事?開くんです、でもなぜ???、あとで再度パッケージの内容を確認すると、はい、元通りになってました!、大変助かりました、本当にありがとうございました!、データ一年分再入力せずに済みました、ほんっとに復旧できて嬉しいです、感謝感激です。でも不思議です。

palm84palm84 2013/03/26 14:32 遅レスすみません。。。
不思議ですが^^;、よかったですね。

通りすがり通りすがり 2013/03/31 08:41 横からですけど結局それデータいじっているわけじゃないから、仮想ディスク救出した時点で問題解決してたんじゃないでしょうか。Fusion5の方で独自にファイル名を暗号化してたりしてMacやKNOPPIXから読めなかったんじゃないかと。