日本語文字化け対応フォーラム

Dataformモジュールのエクスポートが文字化けする件について

 
1997年の頃の写真です
Re: Dataformモジュールのエクスポートが文字化けする件について
Translators
私自身はDataformモジュールを使用していません.いま,気になりましたので自宅でパッケージのみをダウンロードし,ソースコードを読んでみました.したがいまして機能自体も理解していませんので見当違いなコメントかも知れません.問題解決の糸口になれば良いのですが....

 ソースコード中からエクスポートに関わる部分を探しますと,手っ取り早く目に付いたのが,locallib.phpの中のclass dataform_portfolio_callerのpublic function prepare_package()です.おおよそ123行目あたりですね.

* Prepare the package for export
* @return stored_file object
        // export to spreadsheet
        // export to html
        // export to leap2a:未実装
spreadsheetとhtmlの二つの出力がある.今回ご質問のエクスポートとはこれのことではない?

 もしこのエクスポートだとすると,spreadsheet形式,html形式共に,
            $filename = clean_filename($view->name. '-full.'. $this->get_export_config('spreadsheettype'));

このような感じのコードでファイル名を生成しています.ポイントはclean_filename()ということになります.$view->nameがマルチバイトの場合に不都合が出ているという可能性です.実際にここでclean_filename()される前とされた後のファイル名の文字列をvar_dump()等で表示して比較してみては如何でしょうか.ただ,clean_filename()はlib/moodlelib.phpあたりにあるメジャーな関数だと思います.文字化けと言った問題を起こすとは考えにくいですねぇ.やはり別の部分でしょうか.

 コンテンツ自体(内容)も文字化けしているとのことです.まずはファイル名の文字化けから解決するのが早いか?と思い,以上の調査を行いました.

 コンテンツ自体の文字化けに関しては,データベースに登録したデータの文字コードが果たしてutf-8であったか?という可能性もあるのですが,もしここがおかしかったらデータベースモジュール自体の動作にも問題がありそうですね.一応,可能性の一つとして.


 
評点平均: お役立ち度: ★★★★★★★ (1)
画像 Yuuki Murakami
Re: Dataformモジュールのエクスポートが文字化けする件について
 

Shirai様、早速のお返事、ありがとうございます。

データベースモジュールは当環境でも利用はしておりますが
複数人でデータベースを管理する環境の為、更新すると
メールが飛んでほしいという要望が以前から沢山きています。
現状はRSSフィードで利用して追加通知をしております。

データフォームモジュールを利用すると、エントリ削除時や更新時に
対しても通知を行う事が出来るため、何とか使える形に持っていきたい状況です。

今回、ご連絡をいただいた場所を中心にさらに調査をしていきたいと思います。
現状はファイル名もファイルの内容自体も文字化けしており、エクスポートとしては
機能していない状態です。

画像 Yuuki Murakami
Re: Dataformモジュールのエクスポートが文字化けする件について
 

情報に間違いがありました。
Firefox および Chromeでエクスポートすると
ファイル名とタブは日本語表示が出来ていました。
基本的なブラウザごとの動作チェックが抜けていました。

ファイルの中身はどのブラウザ経由で開いても
文字化けしております。

OpenOffice.orgをダウンロードしてCalcなどでも試していますが
結果は同じくファイル内容が文字化けしています。

引き続き、調査を行います。

画像 Yuuki Murakami
Re: Dataformモジュールのエクスポートが文字化けする件について
 

お世話になっております。村上です。
CSV出力に関して文字化けの問題は解決しました。

moodle/mod/dataform/view/csv/classes/csv.phpの131行目付近

※変更前
$returnstr = mb_convert_encoding($returnstr, $this->_encoding);

※変更後
$returnstr = mb_convert_encoding($returnstr, "SJIS" , "auto");


これでExcelファイルの内容が文字化けしなくなりました。

後はエクスポート内容に<br />や<a>タグなどのHTMLタグが入っているため、
タグが取り除く事が出来ればエクスポートファイルとして利用できると思います。

ひとまず文字化けの件は解決しました。

 
評点平均: お役立ち度: ★★★★★★★ (1)