• ベストアンサー

日本語ファイル名の文字化けについて

debian 3.1でsambaサーバを運用して複数のwindowsでファイル共有をしています。 何の不自由もなく使用していましたが、debianのコンソール上で共有ディレクトリを見ると 日本語のファイル名が「??-{?.txt」などと表示されるのが気になり、 convmvというツールでファイル名の文字コード変換を行いました。(euc-jpとsjisをutf8へ) ところが変換がうまくいかなかったらしく、コンソール上でもWindows上でも ファイル名が文字化けしてしまいました。 上記のツールで戻すことができなかったためコンソール上でリネームしようとしたのですが、 ファイル名に「-」や「(」が含まれているため失敗してしまいます。 変換に失敗したファイル名を元に戻す方法があればご教授ください。 よろしくお願い致します。

  • skjn
  • お礼率100% (4/4)

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

ls のデフォルトだと「普通に表示できない」文字は全部 ? と表示してしまいます. なので, ls -b で「実際の文字コード」を調べる ls | cat で表示してみる ? 以外のメタキャラクタを全部 \ でクオートしてみる くらいですかね.

skjn
質問者

お礼

お世話になります。 おかげさまで解決致しました。 すべて手作業でのリネームですが・・・ TeraTerm上で ls -b や ls | cat で表示されたものをコピー&ペーストしてもうまくいかない場合、 そのファイル名を変数に格納することでリネームに成功しました。 この度は回答者の皆様には大変お世話になりました。 ありがとうございました。

その他の回答 (3)

  • initialk
  • ベストアンサー率58% (10/17)
回答No.3

# mount -t smbfs -o username=ユーザ名,password=パスワード,codepage=cp932,iocharset=utf8 //ホスト名/共有名 /mnt/マウントポイント とか、やるんじゃないですか?

skjn
質問者

お礼

ご回答ありがとうございます。 これはほかのlinux等でマウントするということでしょうか? 少し調べて試してみようと思います。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

どのような名前のファイルをどのように指定して, その結果どのようなエラーが出たのですか? ひょっとして "??-{?.txt" などとはしていませんよね?

skjn
質問者

お礼

お世話になります。 "??-{?.txt"と指定しました。 「'」でも試してみましたが、エラーが出ます。 以下、実際にあるファイルでの結果です。 $ mv Opera_?$B%i%$%;%s%9%-!<?(B.txt abc.txt -bash: !<?(B.txt abc.txt: event not found $ mv "Opera_?$B%i%$%;%s%9%-!<?(B.txt" abc.txt -bash: !<?(B.txt" abc.txt: event not found $ mv 'Opera_?$B%i%$%;%s%9%-!<?(B.txt' abc.txt mv: cannot stat `Opera_?$B%i%$%;%s%9%-!<?(B.txt': そのようなファイルやディレクトリはありません 「'」で囲って指定することで特殊文字もファイル名の一部として認識しているようです。 しかし「ファイルがない」と言って来ることから、 表示されているファイル名と実際のファイル名が違うのではと考えています。 ターミナルソフト側の表示設定も変えてみましたが、 実際のファイル名は表示されないようです。 ・Opera_?$B%i%$%;%s%9%-!<?(B.txt これはもともと、 ・Opera_ライセンスキー.txt という名前でした。 (ファイル自体は怪しいもの、違法なものではありません・・)

回答No.1

「"」で囲めばうまくいかなかったかな?

skjn
質問者

お礼

ご回答ありがとうございます。 「"」で囲っても駄目でした。「-」や「)」等は「"」より優先して解釈されるようです。 リネームをあきらめたとしても、削除すらできない状態です。。。

関連するQ&A

  • Sambaのファイル名日本語コード設定について

    Solaris10/x86に付属しているSambaをほぼデフォルト設定で運用しています。 1. FTPを通じて、該当ディレクトリにSJISのファイル名が書き込まれます。 2. このディレクトリに対してSamba経由でWindowsからアクセスします。 なので、SJISで書かれたファイル名を、MS932でSamba共有するという運用がしたくて、以下を設定しました。(ここと共有設定以外は変更していません) /etc/sfw/smb.conf [global] client code page = 932 coding system = sjis で、rc3.d/S90sambaからデーモンを再起動したのですが反映されません。 試しにWindowsからファイルを書き込んでみると、UTF8でファイルができました。 設定が違うんでしょうか・・・?(´・ω・`)

  • ファイル名の文字コード

    LinuxサーバにWindowsよりFTPで日本語ファイルの ディレクトリやファイルを大量にアップロードしました。 どうやらファイル名がsjisでアップロードされてしまったみたいで Linux上から見るとすべて文字化けしています。 ディレクトリ名とファイル名をsjisからeucへ 変換する方法はあるのでしょうか? よろしくお願いします。

  • puttyの日本語版において、SJISファイルが文字化け

    (概要) puttyの日本語版をインストールしたのですが、SJISモードにしても、SJISのファイルを開いた際に、文字化けが発生してしまいます。 (詳細) (1)puttyの設定 ウィンドウ→変換においてSJISモードを設定 (2)サーバー上において、環境変数をLANG=ja_JP.ujisおよびLANG=ja_JP.SJISに設定 上記の設定(1)、(2)で、SJISファイルを開くと文字化けが発生します。 ちなみに、ウィンドウ→変換においてEUC-JPモードを設定し、環境変数をLANG=ja_JP.eucjpに設定した場合に、EUCのファイルを開いた際には、文字化けせずに表示できます。 原因および対処方法がお分かりになる方がいらっしゃいましたら、ご教示をお願いいたします。

  • Latexの文字化けについて教えてください!

    windowsでlatexを使って日本語の含まれたtexファイルを作ったのですが、仮想環境のubuntu10.04でtexファイルを開くと文字化けが起こったので、 iconv -f EUC -t UTF-8 ファイル名.tex > 新しいファイル名.tex platex 新しいファイル名.tex で文字コードをEUCからUTF-8に変換することで、texファイルの文字化けは無くなったのですがxdviを使ってdviファイルを開くと文字化けしています。このような場合はどうすれば解消できますか?わかる方詳しく教えてください! EUSとUTF-8の変換前と変換後の文字コードは、 nkf -g ファイル名 で確認しました。 出来れば、他のubuntuの環境でも文字化けしないようにしたいので、環境設定を変えない方法があれば教えてください!

  • 文字化けしたファイル名の文字コードを変換するには?

    WinXPのマシンに、ファイル名の文字化けしたzipファイルがあります。 このファイルは元々LinuxマシンにあったのをWindowsへ 転送してきたものなので、EUC-JPで文字化けしてしまっているのだと (私は)思うのですが、合ってるでしょうか? また、これをどうすればWindowsで読めるように変換できるでしょうか? 検索などで調べて、KanjiTranslatorという文字コード変換のフリーソフト を使ってみたのですが、うまくいきませんでした…。 (ファイル名の変換と、ファイルの文字コード変換は違うのでしょうか? 方法をお知りの方いましたら、教えていただけないでしょうか? よろしくお願い致します。

  • 文字化けしてしまいます。

    ~の文字が文字化けして、どうしても解決ができません。 どなたかお分かりになる方、アドバイスをよろしくお願いいたします。 PHP5、Xampp、XP の開発環境になります。 実は出勤時間をPCからと携帯からの両方で管理しようと思っています。 データ保存用ファイルは、utf-8のtxtファイルになります。 すべてをutf-8のファイルで作ることができれば、問題は起きてこないわけですが、携帯が かかわってきており、sjisを使わざるを得ません。かといって、すべてのファイルをSJISにするのも これまた、ダメ文字の関係でそれもできません。 そこで、携帯だけはsjisファイルで作っています。このsjisファイルとutf-8ファイルの間で文字化けが おきてしまいます。 出勤時間を読み込んで、10:00~のようにutfの保存用ファイルから読み込んで、mb_convert_encoding でsjisに変換して表示をします。これは、普通に表示になります。 表示されたファイルは携帯のsjisファイルですので、携帯から出勤時間を変更して保存しようとする 場合、今度はsjisからutf-8に変更して保存する必要があります。 そこで、携帯からutf-8の保存用ファイルに更新した内容を保存する場合にmb_convert_encodingを かけて、utf-8に変換しました。一応、mb_detect_encodingを使ってutf-8に変更されていることも 確かめました。 しかし、保存さているデータは、10:00縲 というように~が縲に文字化けしてしまいます。 この文字化けを回避する方法がお分かりの方、ぜひお知恵をお貸しください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • MySQL5.1の文字化け

    多くの方が同様の質問をされていたのですが、一致する問題が見つけれなかったので、ご存じの方がおられたら教えて下さいm(_ _)m (環境)  PHP 5.2.8 ZendFramework 1.5.1 から Pdo Mysqlを使用  文字コード:SJIS  Mysql 5.1  文字コード:EUC-JP (質問内容) 携帯の絵文字データをSJISのバイナリでスクリプト中に埋め込むため、スクリプトの文字コードをSJISに統一したところ、文字化けが発生しました。 SET NAMES SJIS のSQLを発行することで表示は正しくできるようなったのですが、新たにレコードを追加しようとすると文字化けが発生します。 例)情報 → 情表 insertを行う前の文字コードをSJIS,SJIS-win,EUCと変えてみましたが、SJISもしくはSJIS-winの場合は上記の例のとおりとなり、EUCにすると完全な文字化けとなりました... おそらく登録時にMYSQLがSJIS→UTF8→EUCに変換される時に正しく変換されていないものと思われるのですが、どなたか対処方法をご存じないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • unzipで日本語ファイル名が文字化けする

    Windows上で作成した「テスト1.txt」、「テスト2.txt」というファイルを圧縮したsample.zipがあります。これをlinux上でunzipで解凍したところファイル名が文字化けしました。検索すると「-O」オプションで文字コードを指定するとよいとのことでしたが手元のlinux OSのunzipには「-O」オプションは存在しないようでした。 https://qiita.com/toyoshim/items/be4613fa373b4847196f そこで上記ページの記述にあるように 「iconv -f shift-jis -t utf-8を通したリネーム」 というのをやろうと思い 「unzip sample.zip | iconv -f CP932 -t utf-8」 とコマンドを打ってみましたが文字化けしてしまいました。 何かコマンドの使い方間違っていますでしょうか?

  • JavaScriptが文字化けする

    JavaScriptファイルをSJIS、EUC、UTF8を統一したために スクリプト上で var str = "あいうえー"; をUTF16で var str = "\u3042\u3044\u3046\u3048\u30fc"; このように変換をしましたが alert("\u3402");とかですと、文字化けはしないのですが、 innerhtml="\u3402"; のようにやると、文字化けをしてしまいます。 どのようにしたら対処できますでしょうか? もし、対処方法なければ、仕方ないので、コード判別をできるようにと考えています。

  • PHPの文字コード変換について

    PHPで mb_convert_encodingを用いて UTF-8で記述されたPHPスクリプトファイルの PHPファイル内の任意の文字列の文字コードを変換する場合、 $value = "文字列"; $str = mb_convert_encoding($value ,"UTF8","UTF8"); print $str; この場合、特に問題なく、変換がおこなわれます というか、意味のないで処理ではありますが。 次に $str = mb_convert_encoding($value,"EUC-JP","EUC-JP"); とした場合 うまく文字列の文字コードの変換がおこなわれず 出力内容は文字化けします。 次に $str = mb_convert_encoding($value,"SJIS","SJIS"); とした場合 EUC-JPと同じく文字コード変換に失敗し 文字化けするだろうとおもいましたが おもいのほかブラウザの文字コードUTF-8のままで文字化けしていないのです。 これはどういう現象でしょうか? たとえば一つ目は UTF8で記述されたPHPファイルの文字列をそのままUTF-8として 変換されせるのですから、問題ないはずです。結果問題ありません。 二つ目は UTF-8でかかれたPHPファイルの文字列をEUC-JPでかかれたファイルとして EUC-JPという文字コードに変換しなさいという命令ですよね? これは思う通りにいかなくて文字化けした文字列が出力されるのはわかるのですが 三つ目はUTF8で記述された文字列をSHIFT-JISとしてSHIFT-JISに変換しようとしているにも かかわらず、結果問題なくブラウザのUTF-8で文字列と表示されてしまいます。 これはいったいどういう事なのでしょうか? これが仮に $str = mb_convert_encoding($value,"SJIS","UTF-8"); なら話は簡単んです。 UTF-8で記述されたファイルの任意の文字列を UTF8からSJISに変換しようとしているのですから問題なく SHIFT-JISでエンコーディングされた文字列が帰ってくるはずです。 こ乃原因をご存知のかたよろしくご教授ください。 お願い致します。

    • ベストアンサー
    • PHP