miau's blog?

PHP の basename() はロケールに依存するっぽい

引き続き開発機→検証環境の移行をやってたら、DB の SELECT 時にこんなエラーが。

SQL Error: ERROR: invalid byte sequence for encoding "UNICODE": 0x83

なにかと思ったら文字列が壊れてて、「メモ」(\xe3\x83\xa1\xe3\x83\xa2)という文字列を渡したのに、クエリ内では「??モ」(\x83\xa1\xe3\x83\xa2)になっている様子。

クエリの前に実行している処理は、basename。basename('/メモ') が「??モ」になってるわけね。

よくわからないけど環境に依存しそうなところを色々試したところ、

setlocale(LC_CTYPE, 'ja_JP.UTF-8');

で解決できました。以前 も書いたけど、PHP ってたまに環境依存っぽいのがあるから怖い・・・。


posted at 23:49:53 on 2009-03-26 by miau - Category: General No Trackbacks - Permalink

TrackBack

このエントリにトラックバックはありません
現在トラックバックは受け付けていません。

Comments

No comments yet

Add Comments

現在コメントは受け付けていません。
お手数ですが、 こちら のコメント欄にでも記載していただければと思います。