Knowledgeroot:添付文書が文字化け

Linuxというか、オープンソースを扱っていると避けて通ることはできない文字化けとの戦い。ま〜ったく、日本人って損だよね。てゆうか、早くUTF-8に統一しないもんかねぇ。

と、愚痴の元となっているのが添付文書のファイル名の文字化け。Knowledgerootの画面上では正しく見えているんだけど、いざダウンロードしようと思うと日本語ファイル名は文字化けしちゃって、すごいことになっちゃう。

どうやらShift-JISをUTF-8で表示させようとしているみたい。これは、一番手っ取り早いのがファイル名をShift-JISにしてしまい、画面上はShift-JIS→UTF-8変換してしまうことだと思う。

class-knowledgeroot-header.phpの498行目あたりで$this->CLASS['db']->query("INSERT INTO files(belongs_to,file,filename,filesize,filetype,owner) VALUES ('".$_POST['contentid']."','".addslashes(serialize($buffer))."','" . mb_convert_encoding($_FILES['datei']['name'],"Shift-JIS","auto") . "','" . $_FILES['datei']['size'] . "','" . $_FILES['datei']['type'] . "','".$_SESSION['userid']."')");とやって、ファイル名をShift-JISに変換してDBに保存する。

今度は、class-knowledgeroot-content.phpでは304行目あたりで<img src=\"images/file.gif\" class=\"upload\"> ".mb_convert_encoding($row['filename'],"UTF-8","Shift-JIS")."</a></code>として、616行目や618行目で<a href=\"index.php?download=".$zeile['id']."\" title=\"".$title."\"><img src=\"images/file.gif\" class=\"upload\"/> ".mb_convert_encoding($zeile['filename'],"UTF-8","Shift-JIS").">/a<として画面上のファイル名をShift-JIS→UTF-8に変換する。

これで問題無く画面上もダウンロードファイルのファイル名は文字化けしなくなったけど、ダウンロードとともにファイルを開くと「ファイルが見つかりません」みたいな感じで怒られてしまう。今度はこの問題解決に取り組もう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です