.lzhファイルの展開で文字化け

目次

公開日 2023-08-19 更新日 -

.lzhファイルを開こうとして問題発生

環境はDebian12上のGNOME43.4。Debian11上のGNOME3.38.5でも同じ。(GNOMEはバージョン番号から3.を取ることにしたのか?)

拡張子が.lzhであるファイルをいただいた。ファイルマネージャで右クリックで出てくる「アーカイブマネージャで開く」で開くことにする。

これで働くのはfile-roller。

本来なら「名前...サイズ...種類...」とある下にアーカイブの内容が出てくるはずなのが、ない。左上の[Extract]ボタンは押せて、展開場所も指定できるが、展開には失敗する。

右クリックで出てくる「アーカイブマネージャで開く」の下に「Extract」があるがこれでも同じ。

日本語ファイル名の問題らしい

実はlzhファイルを展開できないのではなく、日本語ファイル名の扱いが不適切なアーカイブファイルの扱いに失敗するということらしい。

特にWindows上のソフトウェアではShift_JISをそのまま使ってしまうことがあり、問題になることがある。

synapticでlzhを検索した。デフォルトの検索対象「名前と説明」で17パッケージが候補に出る。

file-rollerもその中にあって、説明にはLha アーカイブ (.lzh)もサポートしているといっています。昔の記憶ですがLhaにもいろいろ種類があったし、問題はたぶん格納されたファイルの名前の文字コードです。WindowsでShift_JISでそのまま格納してトラブルになるというのは前にもありました。

LinuxではWindowsよりも先にunicode化が済んでいて、端末でもUTF-8が標準です。

3つのパッケージを試す

候補にあがったものから3つのパッケージを試してみます。

結果としてlib何とかを追加してfile-rollerに機能追加するという効果もありました。でも、説明を読んだ範囲ではFile-rollerの部品となって働くというように推測できるものが候補にありませんでしたからこれは副次効果。もともとは、端末からコマンドで展開することを考えていたりします。

3つの候補は次の通り。ここでは最初に今回の評価も書いておきます。

名前 synapticの説明文では 今回の評価 端末からコマンドとしての使用 file-rollerからの利用
lhasa 解凍のみ。亜種との互換性 おすすめできない 展開後のファイル名は文字化け。解凍したファイルが失われたりする。 展開できる様になるが、展開前の表示も展開後のファイル名も文字化けする。
jlha-utils lzhの圧縮・解凍を行うコマンドラインプログラム まぁ使える コマンド名lha。文字化けもなく動く 展開できる様になるが、展開前の表示は文字化けする。展開後のファイル名は正常。
unar unpacker programと英語解説。サポート範囲が広い おすすめ 文字化けもなく動く。.zipの文字化けでも活躍したことがある。 file-rollerには機能を提供しない。

lhasa

インストール後、アーカイブファイル名だけを指定すると内容リストになる様子。でも文字化けする。

adachi@tonelli:~/Public$ lhasa R5.8.10安達邸換気フード取替工事写真.lzh 
 PERMSSN    UID  GID      SIZE  RATIO     STAMP           NAME
---------- ----------- ------- ------ ------------ --------------------
[MS-DOS]               2665877  99.9% Jul 22 15:36 R5.7 ???C?t?[?h???????^/A-1 ???C?t?[?h?u?L?b?`???v.JPG
[MS-DOS]               2056251  99.9% Jul 22 15:36 R5.7 ???C?t?[?h???????^/A-2 ???C?t?[?h?u?L?b?`???v.JPG
[MS-DOS]               1221270  99.7% Jul 22 15:35 R5.7 ???C?t?[?h???????^/A-3 ???C?t?[?h?u?L?b?`???v.JPG
[MS-DOS]               1428990  99.9% Jul 22 15:37 R5.7 ???C?t?[?h???????^/B-1 ???C?t?[?h?u?g?C???v.JPG
[MS-DOS]               1315002  99.8% Jul 22 15:34 R5.7 ???C?t?[?h???????^/B-2 ???C?t?[?h?u?g?C???v.JPG
[MS-DOS]               1191594  99.6% Jul 22 15:35 R5.7 ???C?t?[?h???????^/B-3 ???C?t?[?h?u?g?C???v.JPG
[MS-DOS]               1370831  99.5% Aug  9 17:39 R5.7 ???C?t?[?h???????^/C-1 ???C?t?[?h?u?????v.JPG
[MS-DOS]               1588450  99.9% Aug  9 17:39 R5.7 ???C?t?[?h???????^/C-2 ???C?t?[?h?u?????v.JPG
[MS-DOS]               1384381  99.6% Aug  9 17:39 R5.7 ???C?t?[?h???????^/D-1  ?t???L?V?u???J?o?[.JPG
[MS-DOS]               1432138  99.6% Aug  9 17:39 R5.7 ???C?t?[?h???????^/D-2 ?t???L?V?u???J?o?[.JPG
---------- ----------- ------- ------ ------------ --------------------
 Total        10 files 15654784  99.8% Aug 14 15:23

lhasa単独で使用法の説明が出る。

adachi@tonelli:~/Public$ lhasa
Lhasa v0.3.1 command line LHA tool  - Copyright (C) 2011,2012 Simon Howard
usage: lhasa [-]{lvtxe[q{num}][finv]}[w=<dir>] archive_file [file...]
commands:                          options:
 l,v List / Verbose List            f  Force overwrite (no prompt)
 t   Test file CRC in archive       i  Ignore directory path
 x,e Extract from archive           n  Perform dry run
 p   Print to stdout from archive   q{num}  Quiet mode
                                    v  Verbose
                                    w=<dir> Specify extract directory
 Specify extract directory

解凍を試みるが、x も e も効果がない。

adachi@tonelli:~/Public$ lhasa x  R5.8.10安達邸換気フード取替工事写真.lzh 
adachi@tonelli:~/Public$ lhasa e  R5.8.10安達邸換気フード取替工事写真.lzh 

でもファイルが空になってしまう。

adachi@tonelli:~/Public$ lhasa R5.8.10安達邸換気フード取替工事写真.lzh
 PERMSSN    UID  GID      SIZE  RATIO     STAMP           NAME
---------- ----------- ------- ------ ------------ --------------------
---------- ----------- ------- ------ ------------ --------------------
 Total         0 files       0 ****** Aug 14 16:18

lhasaでfile-roller

file-rollerも使えるようになるが文字化け。

Extractボタンも使えるが、ファイル名は文字化けする。(外側のディレクトリは無視された)

file-rollerに変化があるのは、依存関係でインストールされたliblhasa0パッケージの働きだろうと思う。

jlha-utilites

インストール後、アーカイブファイル名だけを指定すると内容リストになる様子。文字化けしない。

adachi@banach:~/Downloads/odo$ lha R5.8.10安達邸換気フード取替工事写真.lzh 
 PERMSSN    UID  GID      SIZE  RATIO     STAMP           NAME
---------- ----------- ------- ------ ------------ --------------------
[MS-DOS]               2665877  99.9% Jul 22  2023 R5.7 換気フード取替写真/A-1 換気フード「キッチン」.JPG
[MS-DOS]               2056251  99.9% Jul 22  2023 R5.7 換気フード取替写真/A-2 換気フード「キッチン」.JPG
[MS-DOS]               1221270  99.7% Jul 22  2023 R5.7 換気フード取替写真/A-3 換気フード「キッチン」.JPG
[MS-DOS]               1428990  99.8% Jul 22  2023 R5.7 換気フード取替写真/B-1 換気フード「トイレ」.JPG
[MS-DOS]               1315002  99.8% Jul 22  2023 R5.7 換気フード取替写真/B-2 換気フード「トイレ」.JPG
[MS-DOS]               1191594  99.6% Jul 22  2023 R5.7 換気フード取替写真/B-3 換気フード「トイレ」.JPG
[MS-DOS]               1370831  99.4% Aug 09  2023 R5.7 換気フード取替写真/C-1 換気フード「浴室」.JPG
[MS-DOS]               1588450  99.8% Aug 09  2023 R5.7 換気フード取替写真/C-2 換気フード「浴室」.JPG
[MS-DOS]               1384381  99.5% Aug 09  2023 R5.7 換気フード取替写真/D-1  フレキシブルカバー.JPG
[MS-DOS]               1432138  99.6% Aug 09  2023 R5.7 換気フード取替写真/D-2 フレキシブルカバー.JPG
---------- ----------- ------- ------ ------------ --------------------
 Total        10 files 15654784  99.7% Aug 11 11:46

出力先の指定がうまく行かないので、カレントドライブを替えて解凍。

adachi@tonelli:~/Public$ cd lhad/
adachi@tonelli:~/Public/lhad$ lha -x ../R5.8.10安達邸換気フード取替工事写真.lzh
R5.7 換気フード取替写真/A-1 換気フード「キッチン」.JPG	- Melted   :  ooooooooooooooooooooooooo
R5.7 換気フード取替写真/A-2 換気フード「キッチン」.JPG	- Melted   :  ooooooooooooooooooooooooo
R5.7 換気フード取替写真/A-3 換気フード「キッチン」.JPG	- Melted   :  ooooooooooooooooooooooooo
R5.7 換気フード取替写真/B-1 換気フード「トイレ」.JPG	- Melted   :  ooooooooooooooooooooooooo
R5.7 換気フード取替写真/B-2 換気フード「トイレ」.JPG	- Melted   :  ooooooooooooooooooooooooo
R5.7 換気フード取替写真/B-3 換気フード「トイレ」.JPG	- Melted   :  ooooooooooooooooooooooooo
R5.7 換気フード取替写真/C-1 換気フード「浴室」.JPG	- Melted   :  ooooooooooooooooooooooooo
R5.7 換気フード取替写真/C-2 換気フード「浴室」.JPG	- Melted   :  ooooooooooooooooooooooooo
R5.7 換気フード取替写真/D-1  フレキシブルカバー.JPG	- Melted   :  ooooooooooooooooooooooooo
R5.7 換気フード取替写真/D-2 フレキシブルカバー.JPG	- Melted   :  ooooooooooooooooooooooooo

展開されたファイルも文字化けせず、"R5.7 換気フード取替写真"というフォルダ構造も再現された。

つまり、こうなったということ。

lhad
└── R5.7 換気フード取替写真
    ├── A-1 換気フード「キッチン」.JPG
    ├── A-2 換気フード「キッチン」.JPG
    ├── A-3 換気フード「キッチン」.JPG
    ├── B-1 換気フード「トイレ」.JPG
    ├── B-2 換気フード「トイレ」.JPG
    ├── B-3 換気フード「トイレ」.JPG
    ├── C-1 換気フード「浴室」.JPG
    ├── C-2 換気フード「浴室」.JPG
    ├── D-1  フレキシブルカバー.JPG
    └── D-2 フレキシブルカバー.JPG

jlha-utilでfile-roller

file-rollerも使えるようになるがやはり、文字化け。

Extractボタンも使える。jlhaはファイル名が文字化けしない。(外側のディレクトリもそのまま)

unarは端末のみ

unarもためす。

unarコマンドでディレクトリ構造ごと展開する。ディレクトリ名がR5.7...で、ファイル名のR5.8.10...とは異なるのでもともとの構造だろう。

展開先フォルダの指定がうまく行く。(もちろん指定しなければカレントフォルダに展開される)。jlhaでは展開先フォルダの指定はうまく行かなかった。

adachi@tonelli:~/Public$ unar -o withunar/ R5.8.10安達邸換気フード取替工事写真.lzh 
R5.8.10安達邸換気フード取替工事写真.lzh: LZH
  R5.7 換気フード取替写真/A-1 換気フード「キッチン」.JPG  (2665877 B)... OK.
  R5.7 換気フード取替写真/A-2 換気フード「キッチン」.JPG  (2056251 B)... OK.
  R5.7 換気フード取替写真/A-3 換気フード「キッチン」.JPG  (1221270 B)... OK.
  R5.7 換気フード取替写真/B-1 換気フード「トイレ」.JPG  (1428990 B)... OK.
  R5.7 換気フード取替写真/B-2 換気フード「トイレ」.JPG  (1315002 B)... OK.
  R5.7 換気フード取替写真/B-3 換気フード「トイレ」.JPG  (1191594 B)... OK.
  R5.7 換気フード取替写真/C-1 換気フード「浴室」.JPG  (1370831 B)... OK.
  R5.7 換気フード取替写真/C-2 換気フード「浴室」.JPG  (1588450 B)... OK.
  R5.7 換気フード取替写真/D-1  フレキシブルカバー.JPG  (1384381 B)... OK.
  R5.7 換気フード取替写真/D-2 フレキシブルカバー.JPG  (1432138 B)... OK.
Successfully extracted to "withunar/R5.7 換気フード取替写真".

展開先フォルダを withunarに指定したので、./withunar/R5.7\ 換気フード取替写真/ 以下に各JPGファイルが展開される。

withunar
└── R5.7 換気フード取替写真
    ├── A-1 換気フード「キッチン」.JPG
    ├── A-2 換気フード「キッチン」.JPG
    ├── A-3 換気フード「キッチン」.JPG
    ├── B-1 換気フード「トイレ」.JPG
    ├── B-2 換気フード「トイレ」.JPG
    ├── B-3 換気フード「トイレ」.JPG
    ├── C-1 換気フード「浴室」.JPG
    ├── C-2 換気フード「浴室」.JPG
    ├── D-1  フレキシブルカバー.JPG
    └── D-2 フレキシブルカバー.JPG

file-rollerには効果がない。

ちなみにunarは.zipの文字化けを解消するのに使用したことがある。入れておくと便利。