<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>WIDGET-INFO &#187; エンコード</title>
	<atom:link href="http://blog.widget-info.net/tag/%e3%82%a8%e3%83%b3%e3%82%b3%e3%83%bc%e3%83%89/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.widget-info.net</link>
	<description>WIDGET-INFOではCakePHPやIPhone情報、その他開発に関する情報を発信</description>
	<lastBuildDate>Sat, 24 Dec 2011 20:47:30 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/tag/%e3%82%a8%e3%83%b3%e3%82%b3%e3%83%bc%e3%83%89/feed/" />
		<item>
		<title>CakePHP　エンコードビヘイビア</title>
		<link>http://blog.widget-info.net/2009/08/cakephp_enc_all/</link>
		<comments>http://blog.widget-info.net/2009/08/cakephp_enc_all/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 23:25:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Behavior]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[エンコード]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=53</guid>
		<description><![CDATA[エンコードビヘイビアのまとめページを作成]]></description>
			<content:encoded><![CDATA[<p>エンコードビヘイビアのまとめページを作成しました。</p>
<p>CakePHPの開発のヒントになれば幸いです(笑</p>
<p><a href="http://blog.widget-info.net/encoding_behavior/">エンコードビヘイビアのまとめへ</a>
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F08%2Fcakephp_enc_all%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/08/cakephp_enc_all/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/08/cakephp_enc_all/" />
	</item>
		<item>
		<title>CakePHP　エンコードbehaviorの拡張</title>
		<link>http://blog.widget-info.net/2009/08/cakephp_enc_behavior_update/</link>
		<comments>http://blog.widget-info.net/2009/08/cakephp_enc_behavior_update/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 14:12:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Behavior]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[エンコード]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=38</guid>
		<description><![CDATA[CakePHPのエンコードbehaviorを拡張する]]></description>
			<content:encoded><![CDATA[<p><a title="エンコードビヘイビアv1" href="http://blog.widget-info.net/2009/08/cakephp_enc_behavior/" target="_self">前回</a>はビヘイビアの使い方を簡単な例で解説させていただきましたが<br />
さらに拡張していく方法を例で解説していこうかと思います。</p>
<p>さらに拡張と言っても簡単な拡張例です(笑<br />
<a title="エンコードビヘイビアv1" href="../2009/08/cakephp_enc_behavior/" target="_self">前回</a>のエンコードビヘイビアでは、実は自由度が不足していることに<br />
お気づきでしょうか?ヒントはエンコードです(笑<br />
<span id="more-38"></span>実はエンコードが固定なのです(汗<br />
CakePHPをデフォルトで利用する場合はいいのかもしれませんが、<br />
実際の現場は違います(泣</p>
<p>「SJIS」やら「EUC-JP」など開発するアプリケーションごとに<br />
利用するエンコードは変わります。<br />
今は「UTF8」が基準になりつつありますが日本では「SJIS」や「EUC-JP」が<br />
いまだに利用されています。特に携帯電話。。。</p>
<p>さて本題ですが、<a title="エンコードビヘイビアv1" href="../2009/08/cakephp_enc_behavior/" target="_self">前回</a>紹介させていただいたビヘイビアでは<br />
エンコードが変わるたびに、別のビヘイビアとして複製しなければならない仕様でした。<br />
そこでこのビヘイビアが実行されるたびに、エンコード指定を変更できるようにしましょう。<br />
※先にそれをリリースしてくれというのはご勘弁を(笑</p>
<p><a title="エンコードビヘイビアv1" href="../2009/08/cakephp_enc_behavior/" target="_self">前回</a>のソースコードを次のように変更していきます。<br />
まずはエンコードをセットするメソッドを次のように追加していきます。</p>
<pre class="brush:php">function setEncoding($config = array()){
$this-&gt;encoding_to = (isset($config['to']) &amp;&amp; !empty($config['to']))?$config['to']:'SJIS';
$this-&gt;save_encoding_to = (isset($config['save']) &amp;&amp; !empty($config['save']))?$config['save']:Configure::read('App.encoding');
}</pre>
<p>追加したら次は「setup」を次のように変更します。</p>
<pre class="brush:php">function setup(&amp;$model, $config = array()) {
$this-&gt;model = $model;
$this-&gt;setEncoding($config);
}</pre>
<p>これで拡張は完了です。<br />
「setup」の第2引数ではモデルからこのビヘイビアが実行された際に<br />
このビヘイビアに対して値を渡すための変数になります。</p>
<p>つまりモデルで次のように指定することが可能になります。</p>
<pre class="brush:php">$actsAs = array('Encoding'=&gt;array('to'=&gt;'EUC-JP','save'=&gt;'utf8'));</pre>
<p>の場合は「EUC-JP」へ</p>
<pre class="brush:php">$actsAs = array('Encoding'=&gt;array('to'=&gt;'SJIS','save'=&gt;'utf8'));</pre>
<p>の場合は「SJIS」<br />
なにも指定しなかった場合は「SJIS」が基本としています。</p>
<p>いかがでしょう?自由度が多少なりとも高くなったと思います(汗<br />
これでこのビヘイビアを複製することなく、1つで複数のエンコード変換に対応できます。</p>
<p>実際のコーディング結果は以下のリンクに例としてダウンロードができます。<br />
<a title="エンコード" href="http://blog.widget-info.net/files/dl/encoding-1.2.0.zip" target="_blank">エンコードbehavior</a></p>
<p>ちなみコード中にでてくる</p>
<pre class="brush:php">Configure::read('App.encoding')</pre>
<p>を不思議に思ったかたもいると思います。<br />
これは「app/config/core.php」に設定されている基本エンコード指定値を呼び出すコードです。
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F08%2Fcakephp_enc_behavior_update%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/08/cakephp_enc_behavior_update/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/08/cakephp_enc_behavior_update/" />
	</item>
		<item>
		<title>CakePHP　エンコードbehavior</title>
		<link>http://blog.widget-info.net/2009/08/cakephp_enc_behavior/</link>
		<comments>http://blog.widget-info.net/2009/08/cakephp_enc_behavior/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 12:19:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Behavior]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[エンコード]]></category>

		<guid isPermaLink="false">http://blog.widget-info.net/?p=33</guid>
		<description><![CDATA[ビヘイビアの作成例です。]]></description>
			<content:encoded><![CDATA[<p>ビヘイビアの作成例です。<br />
ビヘイビアとは、どのモデルに対しても機能拡張できるライブラリです。</p>
<p><span id="more-33"></span>といっても言葉で表すより例を。。。</p>
<p>下記リンクより簡単なビヘイビアの例がありますので、ファイルをダウンロードしてみてください。</p>
<p><a title="エンコード" href="http://www.widget-info.net/downloads/dlfile/encoding-1.1.0.zip" target="_blank">エンコードbehavior v1.1.0</a><br />
最新バージョンは<a title="エンコードビヘイビアv1.2" href="http://blog.widget-info.net/encoding_behavior/">こちら</a>から</p>
<p>ダウンロードしたファイルを解凍すると「encoding.php」がありますので<br />
このファイルを「app/models/behaviors」にアップロードしてください。</p>
<p>このビヘイビアはデータベースから取得したデータを任意の文字コードに自動変換するビヘイビアです。<br />
またデータベースへの保存時には任意の文字コードに変換してから保存してくれます。</p>
<p>さて、このビヘイビアをどのようにモデルに適用をするかですが。。。</p>
<p>この機能を適用したいモデルに以下のように記述してください。</p>
<pre class="brush:php">var $actsAs = array('Encoding' =&gt; array());</pre>
<p>サンプルの設定はこれだけです(笑<br />
その後「findAll」や「find」をしてもらうと、「UTF-8」から「SJIS」へ<br />
データベースからの取得データの文字コードが変換されていると思います。</p>
<p><del datetime="2009-09-14T13:18:00+00:00">さらに詳しいビヘイビアの利用方法は、またの機会に(笑</del>
<div class="fblike_button" style="margin: 10px 0;"><iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.widget-info.net%2F2009%2F08%2Fcakephp_enc_behavior%2F&amp;layout=standard&amp;show_faces=false&amp;width=450&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:450px; height:25px"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.widget-info.net/2009/08/cakephp_enc_behavior/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.widget-info.net/2009/08/cakephp_enc_behavior/" />
	</item>
	</channel>
</rss>

