トリミング2

閲覧数: 72(0)

WordPressの場合、Mediawikiより手厚い日本語環境(マルチバイト対応)が用意されているので、トリミングなんて話題が出るとは思わなかったけど、やはりどんな仕組みでも、シングルバイトとマルチバイトの問題は発生するようだ。手厚い日本語環境の分、問題が起きた時には返って重症化するってこともある。Mediawikiの時に何が起きていたのかおさらいすると、大まかに言って、日本語は基本的に2バイトで表現されている、英数字は1バイト。ブログなどで本文の一部を表示して、残りは「続きを読む」などの表現で省略しているケースが多々ある。このサイトも、今のテーマでは実装されている。これは手動ではなく、自動的に本文をカットして一部分のみを表示する仕掛けが裏で動いといると考えてまず間違いない。その時、英数字のみの文章なら、どこをカットしても問題ないが、日本語で書かれた文章を、2バイト区切りを意識せずにカットすると、2バイトで1文字なので、その真ん中でカットしてしまうと、文字として表現できず、文字化けを起こしてしまう。そうならないように、2バイト単位でカットする関数が用意されているので、その関数を使うように変更するのが、いわゆる日本語対応。Wordpressの場合は、その辺までは既に実装されているので、これまで問題は起きなかったけど、本文中に特殊文字が含まれていた場合、その特殊文字の部分でカットされると、文字化けするというちょっと高度な問題が発生した。テーマ部分の追加実装で解決したかったけど、どうやら難しいようで、結局、Wordpress本体に手をつけた。1バイトの特殊文字を、省略表示する時だけ、2バイト文字に変換する対応で回避することができた。実装量としては、ほんの一行ほどだけど、関数の入れ子関係が複雑でちょっと解決までに時間を要した。この対策は、Wordpress本体のバージョンアップに直接影響を受けるので、今後はバージョンアップには注意が必要。出来れば、本体以外の部分で回避する仕組みを思いつきたいところではある。

最終更新日: 2016年3月19日

カテゴリー公開タグ, , ,
mediawikiの更新手順

バージョンが上がって「設定」が古くなったので書き直しました。作業順序は以下の通り。 /var/www  続きを読む

テーマ更新
blank

obliqueテーマを最新版(2.0.11)にアップデートしたところ、アイコンに使っている「Font  続きを読む

コンテナとFirewall
blank

三日連続のdockerネタです。前回の「コンテナの自動起動」でサーバーを再起動した時にコンテナ(ph  続きを読む

子テーマ化詳細
blank

子テーマ化にあたって具体的に修正した部分の説明をします。まずは「header.php」から。サイトの  続きを読む

SudachiとElasticsearc...
blank

検索に関する初稿は2015年10月の「検索に悩む」でした。当時はWordPress標準の検索機能(S  続きを読む

トリミング3
blank

先日から投稿ページ下部に、関連記事を表示するプラグインを導入しました。人気プラグインである、Word  続きを読む

スポンサーリンク

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください