私はDebianを使用しています。 Sóanr.jpgというファイルがあります。 ~によるとhttps://emojidissector.com/、これは次のコードポイントで構成されています。
S 0053 LATIN CAPITAL LETTER S
o 006F LATIN SMALL LETTER O
́ 0301 COMBINING ACUTE ACCENT
a 0061 LATIN SMALL LETTER A
n 006E LATIN SMALL LETTER N
r 0072 LATIN SMALL LETTER R
このファイルのzipファイルを作成して解凍すると、ラテン小文字Oと組み合わせたアクセントが結合され、新しいコードポイントが形成されます。
S 0053 LATIN CAPITAL LETTER S
ó 00F3 LATIN SMALL LETTER O WITH ACUTE
a 0061 LATIN SMALL LETTER A
n 006E LATIN SMALL LETTER N
r 0072 LATIN SMALL LETTER R
これは私が望むものではありません。元のUnicodeコードポイントを保存する方法は?
編集:以下のStephen Kittの例にうまく従うことzip
ができました。unzip
うん!これは良いニュースです。ただし、Nautilusを使用すると、まだ上記の問題が発生しますright-click -> Extract Here
。
Nautilusを使用してアーカイブを抽出すると、right-click -> Extract Here
Unicode文字は上記のように変更されます。だからノーチラスは使われていないと思いますunzip
。
zip
(コマンドを使用してもNautilusを使用しても、zipを作成する方法は重要ではないようですright-click -> Compress
。)
質問は次のとおりです。
ノーチラスのデフォルトの圧縮解除器が私のUnicodeを壊さないようにzipアーカイブを作成する方法はありますか?
(また:Nautilusがどのプログラムを使用しているのか、どうすればわかりますかExtract Here
?)
フォワードzip
:
$ ls S* | od -a -t x1
0000000 S o L soh a n r . z i p nl
53 6f cc 81 61 6e 72 2e 7a 69 70 0a
後ろにright-click -> Extract Here
:
$ ls S* | od -a -t x1
0000000 S C 3 a n r . j p g nl
53 c3 b3 61 6e 72 2e 6a 70 67 0a
ベストアンサー1
何もする必要はありません:
$ touch So<0301>anr.jpg
$ ls So* | od -a -t x1
0000000 S o L soh a n r . j p g nl
53 6f cc 81 61 6e 72 2e 6a 70 67 0a
0000014
$ zip -9 unitest.zip So*
adding: Sóanr.jpg (stored 0%)
$ unzip -v unitest.zip | grep Stored | od -a -t x1
0000000 sp sp sp sp sp sp sp 0 sp sp S t o r e d
20 20 20 20 20 20 20 30 20 20 53 74 6f 72 65 64
0000020 sp sp sp sp sp sp sp sp 0 sp sp sp 0 % sp 0
20 20 20 20 20 20 20 20 30 20 20 20 30 25 20 30
0000040 2 - 0 2 - 2 0 2 3 sp 1 2 : 2 6 sp
32 2d 30 32 2d 32 30 32 33 20 31 32 3a 32 36 20
0000060 0 0 0 0 0 0 0 0 sp sp S o L soh a n
30 30 30 30 30 30 30 30 20 20 53 6f cc 81 61 6e
0000100 r . j p g nl
72 2e 6a 70 67 0a
0000106
これは、ファイル名が作成時に保存されたことを示します。ファイルを抽出すると、名前が保存されます。
$ rm So*
$ unzip unitest.zip
Archive: unitest.zip
extracting: Sóanr.jpg
$ ls So* | od -a -t x1
0000000 S o L soh a n r . j p g nl
53 6f cc 81 61 6e 72 2e 6a 70 67 0a
0000014
Nautilusはアーカイブの抽出には使用されず、次のものがunzip
使用されます。無料アーカイブ。 libarchiveを使用する他のツールにも同じ問題があります。
$ bsdtar -tf unitest.zip | od -a -t x1
0000000 S C 3 a n r . j p g nl
53 c3 b3 61 6e 72 2e 6a 70 67 0a
0000013
私は何も見ないlibarchiveに提出された関連のバグ(の出力を参照ldd /usr/bin/nautilus
)最新バージョンがまだこのように機能しているかどうかをテストした後、開いてみることができます。