<?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>MJ::Blog &#187; Akelos</title>
	<atom:link href="http://www.majima.net/category/akelos/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.majima.net</link>
	<description>日々のあれこれをテキトーに</description>
	<lastBuildDate>Sun, 11 Mar 2012 14:25:18 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.majima.net/category/akelos/feed/" />
		<item>
		<title>[Akelos] MySQLでの文字コード対応</title>
		<link>http://www.majima.net/php/246/</link>
		<comments>http://www.majima.net/php/246/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 01:56:09 +0000</pubDate>
		<dc:creator>MJ</dc:creator>
				<category><![CDATA[Akelos]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.majima.net/php/246/</guid>
		<description><![CDATA[AkelosのSVNリポジトリを見てみたらいくつかバージョンアップがなされていた。 比較的暇だったこともあり今回は１つ１つソースを見てどこが変わったのかなー、と眺めていた。 その中の一つ、AkActiveRecord/A [...]]]></description>
			<content:encoded><![CDATA[<p>AkelosのSVNリポジトリを見てみたらいくつかバージョンアップがなされていた。<br />
比較的暇だったこともあり今回は１つ１つソースを見てどこが変わったのかなー、と眺めていた。</p>
<p>その中の一つ、AkActiveRecord/AkDbAdapters/AkMysqlDbAdapter.php の変更点を見ていておっとっとと思った。</p>
<p>と言うのが今回の話。</p>
<p>MySQLで日本語を扱うとぶつかってくる文字コードの問題。<br />
とにかくアプリ実行時に &#8216;SET NAMES(or CHARACTER SET) utf8&#8242; を実行するという方法で、後はどのタイミングで実行するかというところです。Akelosでもいろいろと方法があるわけで、</p>
<ul>
<li>ApplicationController ではじめに実行</li>
<li>Akelosのソースいじって、MySQL接続直後に実行</li>
</ul>
<p>などあります。以下の参考サイトの受け売りであります。</p>
<dl>
<dt>参考：</dt>
<dd><a href="http://d.hatena.ne.jp/simpraight/20071215" target="_blank">[Akelos][php]Akelosでmysqlの文字化けをどうにかする</a></dd>
<dd><a href="http://blogs.atanaka.biz/tanaka/index.php?itemid=734&amp;catid=18" target="_blank">[Akelos] Akelos で set names utf8</a></dd>
</dl>
<p>はじめは Akelosのソースに手を入れる方法を採用し、<br />
ここ最近は<a href="http://blogs.atanaka.biz/tanaka/index.php?itemid=734&amp;catid=18" title="Tanaka Blog" target="_blank">Tanaka Blog</a> さんの config/boot.php の最後に SET NAMES utf8 を実行する方法を採用していた。</p>
<p>で、今回のソースを眺めていてである AkActiveRecord/AkDbAdapters/AkMysqlDbAdapter.php の最後の方</p>
<pre><code>function connect($die_on_error=true)
{
    parent::connect($die_on_error);
    if(defined('AK_SET_UTF8_ON_MYSQL_CONNECT') &amp;&amp; AK_SET_UTF8_ON_MYSQL_CONNECT){
        if(isset($this-&gt;connection-&gt;_connectionID)){
            if(function_exists('mysql_set_charset')){
                mysql_set_charset('utf8', $this-&gt;connection-&gt;_connectionID);
            }else{
                mysql_query('SET CHARACTER SET "utf8"', $this-&gt;connection-&gt;_connectionID);
            }
        }
    }
}
</code></pre>
<p>とある。つまりは、config/config.php で</p>
<pre><code>define('AK_SET_UTF8_ON_MYSQL_CONNECT', true);</code></pre>
<p>としてあげれば、いいようである。<br />
最近はutf8しか使わんから自分はこれでもかまわないけれども、できれば encoding に対応してほしいところである。<br />
こんな感じだろうか。</p>
<p>config/database.yaml への encoding 属性追加</p>
<pre><code>development:
    type: mysql
    database_file:
    port:
    database_name: mj
    user: mj
    password: mj
    options:
    encoding: utf8   ← こんなかんじかしらｗ
</code></pre>
<p>で件のAkActiveRecord/AkDbAdapters/AkMysqlDbAdapter.phpの該当箇所で</p>
<pre><code>function connect($die_on_error=true)
{
    parent::connect($die_on_error);
    if(!empty($this-&gt;settings['encoding']){
        if(isset($this-&gt;connection-&gt;_connectionID)){
            if(function_exists('mysql_set_charset')){
                mysql_set_charset($this-&gt;settings['encoding'], $this-&gt;connection-&gt;_connectionID);
            }else{
                mysql_query('SET CHARACTER SET "'.$this-&gt;settings['encoding'].'"', $this-&gt;connection-&gt;_connectionID);
            }
        }
    }
}
</code></pre>
<p>
ちなみに未検証です(汗)。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.majima.net/php/246/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.majima.net/php/246/" />
	</item>
		<item>
		<title>エール＠あけろすにっき</title>
		<link>http://www.majima.net/php/219/</link>
		<comments>http://www.majima.net/php/219/#comments</comments>
		<pubDate>Fri, 09 May 2008 00:45:49 +0000</pubDate>
		<dc:creator>MJ</dc:creator>
				<category><![CDATA[Akelos]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.majima.net/php/219/</guid>
		<description><![CDATA[PHP Framework Fight! という何とも気になる闘いが催されている。 4月末におおーと気になってみていて 参加者エントリーに Akelosが無いなー もし誰もエントリーしないならエントリーしてみようかなー  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://d.hatena.ne.jp/sotarok/20080422/php_framework_fight">PHP Framework Fight!</a><br />
という何とも気になる闘いが催されている。</p>
<p>4月末におおーと気になってみていて<br />
参加者エントリーに Akelosが無いなー<br />
もし誰もエントリーしないならエントリーしてみようかなー</p>
<p>と、軽く考え</p>
<p>軽く考えた故にGW中は子供と遊んでいて忘却の彼方。</p>
<p>GW明け<br />
そういやなんとかファイトあったよなーと思ってみてみたら<br />
Akelosエントリー者発見。<br />
つーか知らないフレームワークいっぱいだわ。</p>
<p><a href="http://d.hatena.ne.jp/gegegen/">gegegen</a>さんがAkelosでエントリーをしています。</p>
<p>gegegenさんガンガレ。<br />
軽いエールを送ることにします。<br />
ブログおっかけよっと。<br />
ついでに自分の Ruby on Railsの勉強にもなるかもしれんわ</p>
]]></content:encoded>
			<wfw:commentRss>http://www.majima.net/php/219/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://www.majima.net/php/219/" />
	</item>
	</channel>
</rss>

