Re: truncate a mb-string to a given octet length?
| From: | Tom Worster | Date: | Sat, 13 Jun 2009 15:43:19 +0000 |
| Subject: | Re: truncate a mb-string to a given octet length? | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-294009@lists.php.net to get a copy of this message | ||
eddie,
you were quite right and i was wrong.
after discovering that the longest utf8 varchar column that mysql will allow
is varchar(333), i did some tests. on a varchar(255) column, mysql allows
strings with up to 255 utf8 characters to be inserted. and it truncates at
255 characters observing utf8 character sequences.
now i have to go back to the script that convinced me otherwise and figure
out what i misunderstood in it.
section 10.4.1 of the manual could be explicit about it. when i read it i
got the clear impression the parameter referred to octets.
On 6/12/09 1:22 PM, "Tom Worster" <fsb@thefsb.org> wrote:
> On 6/12/09 11:52 AM, "Eddie Drapkin" <oorza2k5@gmail.com> wrote:
>
>> Correct me if I'm wrong, but should varchar 255 with a utf8 character set
>> mean
>> 255 unicode characters, not octets?
>
> in mysql, the length refers to the storage space of the string, not the
> decoded character count. i don't know about other dbms.
>
>
>> On Fri, Jun 12, 2009 at 11:50 AM, Tom Worster <fsb@thefsb.org> wrote:
>> say a table in the db has a varchar(255) column, 255 being the max number of
>>> octets of strings that can go in the column. now say the php script very
>>> occasionally has to deal with utf8 input strings with octet length > 255 --
>>> it needs to select rows matching the input string or insert the input
>>> string.
>>>
>>> so what i think i need is a function to truncate a utf8 string to the
>>> longest valid utf8 string that has octet length <= 255.
>>>
>>> is this what mb_strcut() is for? i'm having a hard time understanding the
>>> man page for that function.