バックグランド実行における漢字出力不可の対策方法を教えてください。
Linux(Ecolinux9.10)で夜間自動バックアップシステムを稼動させていますが、バックアップが正常に処理されたかどうかを毎朝自分のWindowsマシン上で確認するために、記録されたファイル名を(インターネット経由で)メールにて送信しています。しかし、毎回受け取っているファイル名は漢字の部分がすべて"¥"が先頭に付いたエンコード文字となって受け取っています。
一連の処理はシェルとして、すべてスケジュール起動しています。
原因を調べたところ、作成されたファイルの中身を見るコマンドtarにてリダイレクションを使って出力したファイルが必ず化けてしまいます。コマンドラインでは、root実行すると発生するようです。また、スケジュール実行では必ず発生します。
そこで質問ですが、root環境でもしっかり漢字のまま、ファイルに出力するようにシェルを工夫する方法、または受け取ったメールを漢字にデコードされた状態になる方法を教えていただけないでしょうか?よろしくお願いします。
なお、ネットで調べた結果、シェルに"export=~"を入れて、シェルを日本語環境で動作させているつもりです。想像では、日本語ターミナル上で動作させることで問題が解決かなと思っていますが、肝心の日本語ターミナルが不明です。
No.2ベストアンサー
- 回答日時:
> シェルに"export=~"を入れて、シェルを日本語環境で動作させているつもりです。
そのつもりがなってないのでしょう。
こっちでやると
LC_ALL=C tar tf test.tar
→\345\271\263\346\210\220
LC_ALL=ja_JP.UTF-8 tar tf test.tar
→平成
となります。
あるいは、\数字を変換するようなフィルタをかけるとか
LC_ALL=C tar tf ttt.tar | perl -npe 's/\\(\d+)/sprintf("%c",oct("$1"))/ge'
→平成
回答ありがとうございます。今朝方確認しましたところ、無事日本語表示ができました。
また、文字化けが起こった場合の回避方法も教えていただきありがとうございました。
一番手軽に文字を変換できるのがPerlだったとはと思ったほどです。(Perlをここしばらく使っていないので)
No.3
- 回答日時:
あれ? ちょっとまった.
よく見たら, "export=~" じゃダメじゃん. 古きよき Bourne shell なら
LC_ALL=ja_JP.UTF-8; export LC_ALL
bash ならこれかあるいは
export LC_ALL=ja_JP.UTF-8
ですよね.
ご回答ありがとうございます。
チェックしたら、export LANG のパラメータミスであることがわかりました。envでしっかり確認すれば防げたミスでした。
また、何ぞの折はよろしくお願いします。
No.1
- 回答日時:
「"¥"が先頭に付いたエンコード文字」とはどういうものでしょうか?
具体的にシェルスクリプト (not 「シェル」) を見せてもらうことはできませんか?
そもそも漢字を使わなければいいというだけの話では?
> 「"¥"が先頭に付いたエンコード文字」とはどういうものでしょうか?
例: 平成 → \345\271\263\346\210\220
> 具体的にシェルスクリプト (not 「シェル」) を見せてもらうことはできませんか?
tar tvf file.gz > mail.txt
> そもそも漢字を使わなければいいというだけの話では?
複数のWindowsマシンが利用しているSambaサーバーの中身ですので、漢字は当たり前に使います。問題なのは漢字のファイル名を利用することでなくて、そのファイル名が文字化けすることです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 Windows10の回復環境 2 2023/02/03 19:13
- その他(メールソフト・メールサービス) メールソフトを教えてください 1 2023/03/28 23:32
- 中学校 間違った国語の実力テストの勉強? 1 2022/08/28 15:59
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- その他(プログラミング・Web制作) ゲームを日本語化しようとすると文字化けしてしまいます。 2 2022/08/19 15:36
- 労働相談 合意済み仕様の商品納入後における仕様変更要求への対応について 5 2023/04/19 09:41
- 簿記検定・漢字検定・秘書検定 20代前半 漢字検定を受けたい者です。 私は、今まで漢字が嫌いで勉強から逃げて来ました。 今になって 4 2022/08/17 00:21
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Cシェル内でBシェルの様な関数...
-
.cshrc ファイルについて
-
『存在するかどうか分からない...
-
Thunderbirdで既読にしても、シ...
-
シェル 会話形式でエンターキ...
-
BシェルとCシェル
-
export と set は違うの?
-
Solaris9でdateコマンドの結果...
-
シェルにて日付計算して値を取...
-
シェルスクリプトに関する問題...
-
lsコマンド部分一致方法
-
Cシェルでのファイルからの入...
-
ターミナルが全く入力できない
-
makefile内の$$$$の意味
-
シェルスクリプトで #!/bin/sh ...
-
(PC初心者)シェルスクリプト...
-
バックスラッシュの意味がわか...
-
シェルやviのショートカットの意味
-
msys(cygwin)で、シェルスクリ...
-
シェルのコマンドの仕組み
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
export と set は違うの?
-
Cシェル内でBシェルの様な関数...
-
シェル 会話形式でエンターキ...
-
シェルスクリプトで #!/bin/sh ...
-
.cshrc ファイルについて
-
『存在するかどうか分からない...
-
ubuntuの端末の左にカレントデ...
-
ターミナルが全く入力できない
-
バックスラッシュの意味がわか...
-
Linuxのファイル禁止文字
-
シェルスクリプトに関する問題...
-
mac os x10.6.4のターミナルでp...
-
シェルスクリプトのbashとperl...
-
違いについて
-
tcshなのにスクリプト構文中のs...
-
シェル(ksh)で変数にある文字列...
-
posixでshellを起動したとき`da...
-
シェルの変数をMySQLに送る方法...
-
Solaris9でdateコマンドの結果...
-
Cシェルでのファイルからの入...
おすすめ情報