CentOS5の文字コードをUTF-8に設定

8月 2nd, 2008 | このエントリをはてなブックマークに追加 このエントリをdel.icio.usに追加 このエントリをLivedoor Clipに追加 このエントリをYahoo!ブックマークに追加 このエントリをFC2ブックマークに追加 このエントリをNifty Clipに追加 このエントリをPOOKMARK. Airlinesに追加 このエントリをBuzzurl(バザール)に追加 このエントリをChoixに追加 このエントリをnewsingに追加 

どこかにCentOSの文字コードは
デフォルトでUTF-8だと書いてあった気がしたのですが、
vimを使うといつも文字化けしていました。

そこで調べるために以下のコマンド。

printenv | grep LANG

結果は

LANG=”C”

 
・・・ということでちゃんと設定(苦笑)
以下のサイトを参考にさせていただきました。

CentOSの文字コードを変更
http://www.ivystar.jp/archives/59
(アイビースター)

tagged:

Trackback URL for this post:

mb_substrと文字コード

4月 18th, 2008 | このエントリをはてなブックマークに追加 このエントリをdel.icio.usに追加 このエントリをLivedoor Clipに追加 このエントリをYahoo!ブックマークに追加 このエントリをFC2ブックマークに追加 このエントリをNifty Clipに追加 このエントリをPOOKMARK. Airlinesに追加 このエントリをBuzzurl(バザール)に追加 このエントリをChoixに追加 このエントリをnewsingに追加 

mb_substrを使って日本語を取り出すときに
文字コードの罠がありました。

なお、PHPの文字コードはEUCです。

 
はじめは

$hoge = mb_substr($get_db_data, 0, 1);

と書いていましたが、
どうやらmb_substrの第4引数に文字コード指定ができるようです。

$hoge = mb_substr($get_db_data, 0, 1, ‘EUC-JP’);

 
これでやっと入力チェックが引っかかってくれそうです。。。
(入力チェックの書き方が悪いのですが、影響範囲が広かった。。。)

tagged:

Trackback URL for this post:

mysql_escape_stringの罠

3月 27th, 2008 | このエントリをはてなブックマークに追加 このエントリをdel.icio.usに追加 このエントリをLivedoor Clipに追加 このエントリをYahoo!ブックマークに追加 このエントリをFC2ブックマークに追加 このエントリをNifty Clipに追加 このエントリをPOOKMARK. Airlinesに追加 このエントリをBuzzurl(バザール)に追加 このエントリをChoixに追加 このエントリをnewsingに追加 

仕事でずいぶん前に作られたPHPをいじっていました。

DBの型も、PHPの入力チェックも通っているのに
なぜかSQLエラーが出ていたので調べてみました。

 
諸悪の根源はPHPファイルがSJISだったことであるようです。

エラーを出している部分は以下の部分でした。

$hoge = mysql_escape_string($hoge);

こうするとPHPファイル自体がSJISの場合、
$hogeに¥(円マーク)が入ってしまうケースがあり、
SQLエラーが起こっていました。

 
そこで以下に変更しました。

mysql_set_charset(’sjis’);
$hoge = mysql_real_escape_string($hoge);

mysql_real_escape_stringは
mysql_set_charsetの文字コードを見て$hogeを変換してくれるそうです。

 
ちゃんとした作りにしようと強く実感しました(苦笑)
 

tagged:

Trackback URL for this post:

PHP4でRSSを取ってくる

11月 28th, 2007 | このエントリをはてなブックマークに追加 このエントリをdel.icio.usに追加 このエントリをLivedoor Clipに追加 このエントリをYahoo!ブックマークに追加 このエントリをFC2ブックマークに追加 このエントリをNifty Clipに追加 このエントリをPOOKMARK. Airlinesに追加 このエントリをBuzzurl(バザール)に追加 このエントリをChoixに追加 このエントリをnewsingに追加 

$xml_parse = XML_unserialize($xml_data);

前回、PHP4でXMLをパースする方法を書きましたが、
そもそもウェブ上にあるRSSを取り込みたいとき、
そのXMLファイル(ここでいう$xml_data)はどう取ってくるんだよ、
というところに私はつまづきました。

 
PHPの関数であるfile_get_contentsをして解決しました。

file_get_contents(’http://feeds.feedburner.jp/cafe-system’);

 
なお、文字コードで悩んだ場合は、

$xml = mb_convert_encoding(file_get_contents($HOST), ‘UTF-8′, ‘auto’);

で解決しました。
 
tagged:

Trackback URL for this post:

smartyとPHPのMVC具体例

10月 26th, 2007 | このエントリをはてなブックマークに追加 このエントリをdel.icio.usに追加 このエントリをLivedoor Clipに追加 このエントリをYahoo!ブックマークに追加 このエントリをFC2ブックマークに追加 このエントリをNifty Clipに追加 このエントリをPOOKMARK. Airlinesに追加 このエントリをBuzzurl(バザール)に追加 このエントリをChoixに追加 このエントリをnewsingに追加 

システム初心者の私は、
MVCを理解し切れていません(苦笑)

ですが、最近ちょっとわかってきたことがあります。

 
それは、文字列をクエリの中とかにあまり入れてはいけないということ。

具体的にいうと、

SELECT
IF([カラム名] , ‘○’ , ‘-’ )
FROM
[テーブル名];

といった風に、
SELECTの時点で文字列を入れているアプリがあったのですが、
これをやめてsmartyで制御したほうがよさそうです。

{if $test}○{else}-{/if}

 
ファイルの文字コードとかが絡んでくると面倒な話になります。
(文字コード変えたとたんに表示されなくなるとか。)

今までテンプレートとアプリを
どの線で区切っていけばいいかわからなかったのですが、
ひとついい勉強になりました。
 
tagged:

Trackback URL for this post: