長いタイトルの時などに「...」で省略されることがありますよね。

その時に全角だと文字化けすることがあります。当然日本語でも文字化けが発生する可能性があるわけです。


理由は簡単。全角文字は2バイトだからですよね。途中でぶった切られてしまうわけです。


ClipBucketでの省略方法はtruncateを使ってます。

「truncate:50」とやると50バイト?(調べてみると文字数とかキャラクタ数と書いてあった)でぶった切るわけです。


でもvideo.phpでされるページを見てみると文字化けしてないんですよね。トップページのindex.phpだと文字化けしてるのに。。。


答えを見つけました。

video.htmlの動画のタイトル表示するところを見てみると

{$videos[v_list].title|mb_truncate:20:"...":'UTF-8'}

となってるじゃないですか!!


これだ!!


index.htmlにも導入してみると文字化け解消!!!

mb_truncateはSmartyの機能らしいです。

なんで全部mb_truncateじゃないんだろう・・・。
なんか問題あるのかな???
ちょっと不安で全てのtruncateをmb_truncateに置き換えるのはやってません。

[追記]
ここも直さないと正常に動かないかも。。。

includes/functions.phpの中のTruncateIdiotText。

maxlen以上の文字列をnewlenの長さに変更する動作を行っています。

日本語だとこれでかなり削られてしまうし、文字化けも発生してしまう。
とりあえずUTF-8を指定しましょう。

mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');

を適当なところに置いてください。
これで文字化けなんかは解消できると思います。

ただmaxlenとnewlenの初期値が50と25だったと思うので、これだと日本語は25文字しか表示されません。適当な値に設定しなおしてください。