Win7 の「送信先 > 圧縮 (zip 形式) フォルダー」で名前に Unicode 文字を含むファイルを zip 圧縮するときにエラーが発生する

Win7 の「送信先 > 圧縮 (zip 形式) フォルダー」で名前に Unicode 文字を含むファイルを zip 圧縮するときにエラーが発生する

© や ™ などの Unicode 文字が名前に含まれるファイルを zip 圧縮しようとすると、次のエラーが発生します。

[ウィンドウタイトル] 圧縮(ZIP形式)フォルダエラー

[内容] 'C:\Asd™.txt' は、™ など、圧縮フォルダーで使用できない文字が含まれているため、圧縮できません。このファイルまたはディレクトリの名前を変更する必要があります。

[わかりました]

これは、Windows 7 を再インストールしたときにのみ問題になりました。おそらく、このエラーから自動的に解決されるために必要なリソースがいくつかあったのでしょうが、現在はほぼクリーン インストールされており、ファイルを zip 圧縮できません。どうすれば修正できますか?

追記:この質問を投稿してからしばらく経ち、いつも使っているアプリケーションをいくつかインストールしましたが、問題はまだ存在しており、以前から使用している特定のアプリケーションをインストールすることで解決できるかどうかはわかりません。


Windows 10に組み込まれている圧縮機能では、この問題は発生しない可能性があると報告されています。この質問にコメントする

答え1

問題のある文字が英語以外の言語で、Microsoftがサポートしている言語である場合は、関連するMUI (多言語ユーザーインターフェイス) 言語パックWindows Update、または関連するLIP (言語インターフェースパック)からここ可能な修正として。

上記に加えて、以下の変更も必要になる場合があります。システムロケール

システム ロケールは、Unicode を使用しないプログラムで情報の入力と表示に使用される既定の文字セット (文字、記号、数字) とフォントを決定します。これにより、指定された言語を使用して、非 Unicode プログラムをコンピューターで実行できるようになります。コンピューターに追加の表示言語をインストールする場合は、既定のシステム ロケールを変更する必要がある場合があります。システム ロケールに別の言語を選択しても、Windows または Unicode を使用する他のプログラムのメニューやダイアログ ボックスの言語には影響しません。

そうするために:

  1. スタートメニューの検索ボックスに「region」と入力します(引用符なし)

  2. 開く地域と言語コントロールパネルアプレット

  3. クリック行政タブをクリックし、「Unicode非対応プログラムの言語」の下にあるシステムロケールを変更する管理者パスワードまたは確認を求められた場合は、パスワードを入力するか、確認を行います。

  4. 言語を選択し、「OK」をクリックします。

  5. コンピュータを再起動するように求められたら、今すぐ再起動そうするために。

    Win7 システムロケールの変更


しかし、問題となる文字が次のようなものである場合上で述べたように、この問題に対するマイクロソフトの公式の修正はないと思いますzipfldr.dll の制限これはWindowsにこの機能が搭載されて以来ずっと存在しています(そのため、本当にした早めに修正してください。サードパーティのコンポーネントをインストールした可能性があります。ウィキペディア:

Microsoft Windows のバージョンには、Windows 98 の Plus! パックがリリースされて以来、エクスプローラーでの zip 圧縮のサポートが含まれています。Microsoft はこの機能を「圧縮フォルダー」と呼んでいます。Windows の圧縮フォルダー機能では、すべての zip 機能がサポートされているわけではありません。たとえば、AES 暗号化、分割またはスパンされたアーカイブ、UnicodeエントリエンコーディングWindows XP 以降のバージョンの圧縮フォルダー機能では読み取りまたは書き込みができないことが知られています。

ZIPファイル形式は長い間Unicdeのサポートがなく、この拡張機能は6年前の2006年に追加されたばかりでした。付録 D - 言語エンコーディング (EFS)ZIP ファイル形式の仕様:

D.1 ZIP 形式は、これまで IBM コード ページ 437 と呼ばれるオリジナルの IBM PC 文字エンコード セットのみをサポートしてきました。これにより、ファイル名の文字の保存がオリジナルの MS-DOS 値の範囲内に制限され、他の文字エンコードや言語のファイル名は適切にサポートされません。この制限に対処するために、この仕様では次の変更をサポートします。[残りについてはドキュメントをお読みください。]

それ以来、もちろん、このフォーマットを実装している主要な Windows アーカイバはすべて、2008 年の WinZip から Unicode サポートを含むように更新されました。残念ながら、Microsoft は何らかの奇妙な理由で、圧縮フォルダ機能用にサードパーティ ライブラリのライセンスを取得しました (ZIP サポートをコーディングするのはそれほど難しくありませんが)。このライブラリは明らかに、ZIP ファイル フォーマットに Unicode が追加される前のものです。また、この機能をいかに重視しているかを示す明らかな兆候として、Microsoft はこのバグを修正するためにコードを更新していません。日まで(どうやら、最新バージョンの .Net Framework (つまり 4.5) の新しい System.IO.ZipArchive クラスでも最初はこれを正しく実行できなかったようですが、その後このバグは修正されました)。彼らは、誰もが利用可能な多くのフル機能のサードパーティ アーカイバのいずれかをインストールすることを期待していると思いますが、それはまさに私が上であなたに推奨したことです。

WindowsにおけるUnicodeサポートのこの奇妙な欠如についての忌まわしい詳細は、Microsoftの以下のブログ投稿シリーズで読むことができます。マイケル・カプラン:


PS「Windowsの「送信」で圧縮するとWinRARの「最高の」圧縮と同じくらいうまく機能し、しかもはるかに高速であることが分かりました。」 - 何度もテストしました。WinRARのファイルを開くのにかかる余分な時間を除けば、アーカイブに加えるダイアログでアーカイブ形式として ZIP を選択し、[OK] を押すと、圧縮にかかった実際の時間はどちらもほぼ同じで、WinRAR の方が全体的に時間が短くなりました (ただし、違いはごくわずかです)。大きな違いが見られた場合は、最初に一連のファイルで WinRAR をテストし、その後すぐに同じファイルを圧縮フォルダーで圧縮した場合のみに違いが見られました。当然、2 回目には Windows が既にデータをキャッシュしていたため、プロセスにかかる時間は最初の数分の 1 でした。現在の Windows セッションで以前に触っていない一連のファイルで逆の順序で実行すると、結果は逆になると思います。:)

最終的な圧縮サイズについては、アーカイブされたデータやファイル形式の組み合わせによって異なりますが、どちらの方法の方が優れていることがわかりました(ただし、違いはごくわずかです)。もちろん、7zやRar(またはWinZipのZipX)形式は遠いこの点では優れており、従来のZIP(つまり、従来のZIP)よりもほぼ確実に優れています。収縮するアルゴリズムの代わりにPPMdなど。

答え2

私も同じ問題を抱えています。7-zip マネージャーを使用してファイルを zip 圧縮すると、問題は解決します。:)

関連情報