Joomler!.net - Decided on Joomla!

デル株式会社

Wiki or Wordpress? No it is JContentPlus.

Home » Blog » ISO-8859-1
0 votes
Written by:Joomler! 3780 hits Sunday, 08 June 2008 21:12

見えない文字に以前から惑わされていました。

以前にMovableType XML-RPCでエラーが出るとフォーラムで投稿があり、仮に対応したファイルでとりあえず間に合わせていたのですが、それをすこし掘り下げて見てみました。

これは、MovableType XML-RPCを使わなくても発生するのでみなさんの環境(Joomla!1.5でも発生します。)でもテスト可能です。ただし、一度登録してしまうとデータベースを書き戻さないと元に戻らないことに注意してください。もし、試されるならテスト環境にされた方が良いです。

まず保存後の記事のタイトルを見てください。

after_save

なにも問題なさそうですよね。プレビューしてみるとこんな感じです。(Joomla!1.5)

after_save_html

まったく問題ないように見えます。

では、保存前のタイトルを見てください。

before_save 

「“」と「”」が含まれています。これは「“」と「”」のことです。"ではないことに注意してください。htmlentityで書くと「“」「”」です。

このデータをphpMyAdminで表示しても「Example」の前と後には何も表示されません。ところが、これをブログエディタで取り込むとエラーになります。それは、UTF-8で許されていない文字を使用しているというエラーです。

Joomla!は、いろいろなライブラリで構成されています。この中にinputfilterというライブラリ

  • Jooml!1.5では、Root/libraries/phpinputfilter/inputfilter.php
  • Joomla!1.0.xでは、Root/includes/phpInputFilter/class.inputfilter.php

は、Joomla!の中で適切なクリーニングとサニタイズを行うために重要な役割をしています。これは、Joomla!1.5でも同じです。コンテンツを保存するとこのinputfilterが適切にクリーニングをしてくれるのですが、どうもこのライブラリの基本設定をUTF-8で使う場合は変更しなければならないのではないかと思うのです。基本設定が、ISO-8859-1となっているのでUTF-8の数値文字の場合適切にクリーニング・サニタイズされないのではないかと思います。

そのinputfilterの設定を変更して保存してみるとこうなります。

after_utf8

ちゃんと保存され、表示されているのがわかります。※このテスト環境は、PHP5以上です。

これは、極まれな例なので普通に使っているときは遭遇しない問題かもしれません。ですが、ソースをコピーしたりしたとき、元のソースが数値文字となっていた場合は注意しなければなりません。UTF-8をデフォルトとしているユーザー(JP版もしくは、Joomla!1.5ならほとんどが該当ユーザーです。)ならばその数値文字があらぬ文字に変換されてしまいます。また、その文字はphpMyAdminで保存しなおしても消すことはできません。SQLをエクスポートし、該当する場所を正常な文字に書き換え、インポートしないと消すことはできません。

これは、intortext, fulltextは保存時にinputfilterを通りませんが、title, title alias, metakey, metadescriptionは、inputfilterによって処理されるので注意が必要です。

その、inputfilterの該当部分ですが、PHPのhtml_entity_decode関数を使っている部分です。ですが、この関数は、PHP5より下位バージョンの場合マルチバイトの文字セットをサポートしていないようです。なのでPHP4.xな場合、UTF-8と指定してもISO-8859-1で処理されてしまうため、同じ問題が発生します。PHP5以上の方はISO-8859-1と指定している部分をUTF-8に変更すれば解消されます。そうでない方は、PHPのバージョンを5以上に切り替えるか、PHP Manualを参考に自身で独自のメソッドを加えるか、Joomla!で対応されるのを待つのかをしなければならないのではないでしょうか。

after_save_sql これは、一度保存されてしまうと気づきにくい問題です。データをSQLでエクスポートしてテキストエディタで表示しても半角スペースにしか見えませんし、そのままブラウザで表示しても表示されません。文字の実態になっていないのです。

いろいろ検索してみましたが、Joomla!に関しては具体的な対策をされているものは私は見つけることができませんでした。

PHPのマニュアルに投稿されているメソッドを使って(借りて)変更するとすれば、例えば以下の例のように変更すればPHP4でも可能です。※確実かどうかは検証しているわけではありません。

 
0 votes
Written by:Joomler! 5217 hits Friday, 05 October 2007 19:34

Joomler!.netでも使用しているDS-Syndicate(RSSコンポーネント)をご紹介します。

JOOMLA! Fun

joomlafun.jpg DS-Syndicateコンポーネントは、表示するモジュールとセットで使用します。Joomla!のデフォルトRSSですとHTMLのRSSは、生成してくれませんが、このコンポーネントはHTML(画像付)でRSSを作成してくれます。Joomler!.netの場合は、HTMLのRSSになっていますので対応したRSSリーダー(例えば、IE7のフィードリーダーや、Googlo Readerなど)で見るとほとんどの記事は、そのサイトを訪れることなくその記事の内容が見て取れるのでユーザーにとっては、便利です。(「サイトに来てくれなくなる。」という声もありますが・・・)また、他にもPing機能がついています。このPing機能は、DS-Syndicate内のPingアドレスにブラウザからアクセスすれば、設定したブログピングサーバーに更新通知を送信してくれます。これを利用すれば、定期的にサイトを更新されているなら「Wget+Cron」などで定期実行できるわけです。不定期に更新されていても、そのアドレスにアクセスすればPingできるので便利ですよ。

Joomla.orgのExtensionページ

 ただ...

 
2 votes
Written by:Joomler! 8160 hits Thursday, 20 September 2007 18:54

他の文字コードの違うCMSを使っていたり、初めてCMSを使う方でJoomla!を使用するときエラーが出たり、動かないって困ったことはないでしょうか。私は、今でもエディタによってはデフォルトの保存フォーマットが、Shift-jisだったり、iso-8859-1だったり、へたをするとエディタの設定を間違えていてUTF-16だったりで「なぜ、動かないの?」と、たまに時間を無駄に過ごす時があります。

KanjiTranslator

 kanjitranslator.jpg文字コードでの文字化け。

  • 日本語のランゲージファイルが付属していてもインストールすると文字化けしたりしたら、一度これを使ってみてください。ドラッグドロップしたすべてのファイル(画像とかはもちろん無理でしなくても良い。)を指定した文字コードに変更してくれます。(Joomla!の場合は、UTF-8のBOM無し)かなり、スマートで、Great!!なソフトです。変換してしまうといけないファイルも中にはあるかもしれませんが。大抵、すべてドロップしちゃって様子をみて動けばOKみたいな感じで使っています。たまに、ダメなのもあります。その時は、それっぽいファイルのみドロップしてやり直しですね。

 文字数カットやワードラップによる文字化け...

 
0 votes
Written by:Joomler! 6776 hits Thursday, 09 August 2007 22:21

xmlgenerator.jpgJoomla!のテンプレート作成時に便利なツールです。

XMLファイル作成時によくあるのが

構文ミス
ファイルの記入漏れ
ファイルの消し忘れ

などよくありますよね。このツールを使えばテンプレートフォルダを指定するだけで
良いので忘れることはありません。

http://www.mediensozialismus.de/home.html←こちらのサイトで配布されています。

ただ・・・どうもcssフォルダとimagesフォルダのみを読み取るらしく他のフォルダ名を追加した場合は読み取ってくれません。その場合は手作業なのですが、どちらにしろ作業を軽減してくれるので大変便利です。
注意しないといけないのはiso-8859-1で出力されますから、日本語をXMLファイルに書き入れる場合は忘れずにUTF-8に変更しましょう。

 

JContentPlus for Joomla!1.5 powered by Joomler!.net

デル株式会社
joomler.net is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla!(R) name is used under a limited license from Open Source Matters in the United States and other countries.
joomler.net is not affiliated with or endorsed by Open Source Matters or the Joomla! Project.