[PHP-users 23548]Re: mb_strimwidthと utf-8

Makoto Banba banban @ chuo-gr.co.jp
2004年 11月 5日 (金) 11:40:47 JST


番場です。

>   PostgreSQLは(極端に古いバージョンを除き)文字単位でカウントしますの
> で、varchar(256)だと256バイトではなくて256文字格納できることになります。

7.4.5 ですが、UTF-8 のデータベースに、

create table t_test (name varchar(10));

として、

insert into t_test values ('1234567890'); ... OK
insert into t_test values ('12345678901'); ... NG

insert into t_test values ('あいう'); ... OK
insert into t_test values ('あいうえ'); ... NG

となります。なので、バイトっぽいと思います。
片岡様のおっしゃる、文字単位とはキャラクタセットの最大のバイト数の文字の
数のことだと思いましたが、そうではないのでしょうか?

ちなみに、Firebird は、そのような実装になっているため、

varchar(10)

とすると、UTF-8 の漢字等は、3文字しか入りませんが、シングルバイト文字
なら、10文字入ります。

--
 番場



PHP-users メーリングリストの案内