最終更新: system_notes 2009年02月13日(金) 11:13:17履歴
SkyBlueCanvasの日本語対応
いざ使ってみて、一部の機能にて日本語(2バイト文字)がまともに通らなかったのでちょっと修正
管理画面から各ページを作成・修正する際に、本文に日本語を記載する文には問題なかったが、
ページのメタデータに日本語を使用すると、xmlファイル書き出し時に文字化けしてしまい、
ページの読み込み自体不可能になってしまう。
※/data/xml/page.xml への書き出し時に、文字化けする。
このため、以下のファイルを修正
/includes/xml.parser.php
160行目
どうも、htmlentities()にて文字列をHTMLエンティティに変換する際、変な変換しているっぽい
他のCMS等でも、同じような文字化けが報告されているので、一応2バイト文字圏独特のバグかな?ということで
※ちなみに、今回の環境はWebARENA SuiteX上
WebARENA SuitePROに、動作確認を兼ねて自社サイトっぽいものを作ってみました。
まぁ、今後別のサービス(Virtualminの稼働テスト)をはじめるつもりだったので、その動作確認も兼ねてと言うことで
※内容は、一般的な企業サイトっぽく書いてあるだけなので、内容的には面白くないですけどねw
一応、日本語もこれくらい表示できてます。って言うところは確認できるんじゃないかと
追記:
公式フォーラムにて、他言語(フランス語とかドイツ語)での独特の文字への対応方法が提案されていたが、
2バイト文字ではやはり問題がおきるので、上記をバグ報告してあります。
作者から、次バージョンへの組み込みコメントもらっているので、たぶん対応するかと(09/01/14)
追記: (09/02/02に公式にて対応済み) 詳細は新サイトで
Page作成時に、日本語で"Menu Text"を記載すると、ページへのリンクが全て"-.html"となってしまいます。
これは、SAFE_URLのチェックにて、以外は、一律削除と処理しているためのようです。
このため、"Menu Text"が日本語のページを複数作ると、Page IDが一番若いページに全てリンクしてしまいます。
この機能は、SEO対策としてURLをわかりやすい形に変更し、ApacheのRewriteEngineにてURL置換を行っています。
もうちょっとソース見てみないといけないようです。
では、どうやって回避するかというと
これも、ソースいじらないといけません。
SkyBlueCanvasでは、.htaccessファイルの有無で、RewriteEngineを使用(SEO対策モードで稼働)してしまいます。
これでは、レンタルサーバ等でphp_value等を設定したい、且つ2バイト文字圏での使用に問題が出てしまいます。
このため、以下のファイルを修正
/includes/core.php
331行目
.htaccessファイルの有無で、USE_SEF_URLSのフラグを立てるかどうか判断している部分です。
この修正で、強制的にUSE_SEF_URLSを使用しないようにしています。
ただし、あくまで緊急的な例外処理のため、本質的には問題のある修正です。
一応、このフラグは他のキーに使われていないので、誤作動を起こすことはないと思っています。
(09/01/15)
いざ使ってみて、一部の機能にて日本語(2バイト文字)がまともに通らなかったのでちょっと修正
管理画面から各ページを作成・修正する際に、本文に日本語を記載する文には問題なかったが、
ページのメタデータに日本語を使用すると、xmlファイル書き出し時に文字化けしてしまい、
ページの読み込み自体不可能になってしまう。
※/data/xml/page.xml への書き出し時に、文字化けする。
このため、以下のファイルを修正
/includes/xml.parser.php
160行目
// $xml .= $indent.$k.'="'.htmlentities($v).'"';
$xml .= $indent.$k.'="'.htmlspecialchars($v).'"';
どうも、htmlentities()にて文字列をHTMLエンティティに変換する際、変な変換しているっぽい
他のCMS等でも、同じような文字化けが報告されているので、一応2バイト文字圏独特のバグかな?ということで
※ちなみに、今回の環境はWebARENA SuiteX上
WebARENA SuitePROに、動作確認を兼ねて自社サイトっぽいものを作ってみました。
まぁ、今後別のサービス(Virtualminの稼働テスト)をはじめるつもりだったので、その動作確認も兼ねてと言うことで
※内容は、一般的な企業サイトっぽく書いてあるだけなので、内容的には面白くないですけどねw
一応、日本語もこれくらい表示できてます。って言うところは確認できるんじゃないかと
追記:
公式フォーラムにて、他言語(フランス語とかドイツ語)での独特の文字への対応方法が提案されていたが、
2バイト文字ではやはり問題がおきるので、上記をバグ報告してあります。
作者から、次バージョンへの組み込みコメントもらっているので、たぶん対応するかと(09/01/14)
追記: (09/02/02に公式にて対応済み) 詳細は新サイトで
アルファベット数字一部記号
回避策として、urlencode()を使って、SAFE_URLのチェックを突破させてみたのですが、うまくリンクしないのでちょっとお蔵入り中。。。URLの書き出しはできているが、クリックした際のURLの解釈に問題があるようです。。。
// define('USE_SEF_URLS', file_exists($this->path . '.htaccess') ? 1 : 0 );
define('USE_SEF_URLS', 0 );
(09/01/15)
コメントをかく