zipファイルダウンロード時の文字化け(バージョン7)

      zipファイルダウンロード時の文字化け(バージョン7)

      はじめまして。

      今回初めてowncloudをインストールしたのですが、ウェブUI上で日本語を含むディレクトリやファイルをダウンロードしたときに、ZIP化されると思います。
      そのときにファイル名の文字化けが起きるようです。
      この修正方法などがありましたらご教授いただけますでしょうか。

      よろしくお願いします。

      Post was edited 1 time, last by “tommy” ().

      Tommyさん

      気がつくのが遅くてすみません。

      私の以下の環境では、文字化けは起きていないですね。

      ・Server
      OS:CentOS-6.5
      WebServer:Apache
      ownCloud:7.0.0

      ・Client
      OS:Windows 7 Pro 64bit
      Brwoser:Chrome 36.0.1985.143 m

      貴重なバグレポートの機会かもしれないので、環境など分かれば教えて頂けますか?

      Post was edited 1 time, last by “YANO Tetsuro” ().

      Tommyさん

      別のサーバーでも確認してみました。
      以下の環境で文字化けは起きていません。

      ・Server
      OS:CentOS-6.5
      WebServer:nginx 1.6.1
      PHP:php54w.x86_64 5.4.31-1.w6

      ・Client
      先ほどと同じです。

      ownCloud 7から ZipStreamer というのでZIP圧縮しているようです。
      これのお陰でownCloud 7からは日本語ファイル名の圧縮ダウンロード時の文字化けが解消しているはずなのですが...。

      このZipStreamerは、3rdParty のレポジトリに入っているので、Githubだと、以下の
      github.com/owncloud/3rdparty/
      のレポジトリをサーバーに入れ忘れてないでしょうか?

      <owncloudホーム>/3rdparty/mcnetic/phpzipstreamer/ZipStreamer.php

      上記ファイルを確認して、ZipStreamerが入っておらず、OpenSuseのOBSで入れているのであれば、
      以下のパッケージをyum,もしくはapt-getでいれるのがよいかと思います。(通常は依存関係で自動的に入るはずですが。)

      owncloud-3rdparty.noarch
      YANOさま

      ご返信ありがとうございます。

      私の環境は以下になります。
      Server OS:CentOS6.5
      Web Server:Apache
      Owncloud:7.0.1 (stable)
      PHP 5.3.3-27.el6_5.1

      Client
      Windows 8 Pro 64bit
      Browser: 36.0.1985.143 m & IE11

      それとZipStreamerは入っていました。
      また、最初の書き込みで「今回初めてowncloudをインストールした」と書きましたが「バージョン7を初めて」の意味で、今回は6からのアップグレードを行いました。失礼しました。

      もう一度試してみましたがやはりZIPファイル内のファイル名に文字化けが起きてしまっている状態です。
      Images
      • screenshot.jpg

        60.75 kB, 840×450, viewed 737 times

      Post was edited 1 time, last by “tommy” ().

      修正してみたんで試してみて。たぶん行けると思うけど。
      lib/files.phpを以下のように変更すればいいと思う。
      136行目
      $zip->addFileFromStream($fh,mb_convert_encoding(basename($file),'SJIS','UTF-8'));
      203行目
      $zip->addEmptyDir(mb_convert_encoding($rootDir,'SJIS','UTF-8'));
      215行目
      $zip->addFileFromStream($fh,mb_convert_encoding($internalDir.$filename,'SJIS','UTF-8'));
      クローズされたチケットですが、良い案思いついたので投稿しておきます。
      というのも、
      • coreソースを弄りたくない
      • バージョンアップ時に直した箇所が上書きされてしまう
      • 全てSJIS変換してしまうとmacでのダウンロード時に文字化けしてしまう
      といった懸念があるためです。

      上記懸念を払拭したアプリを作ってみました。
      # ソースはkamome885さんの指摘をそのまま使っています。

      github.com/ukitiyan/zipstream_ja/archive/master.zip

      上記アプリをappsフォルダにダウンロードして、当該アプリを有効にすればZIP文字化け問題が解消します。
      # zip解凍後のアプリディレクトリはzipstream_jaとしてください。

      良かったら使ってください。