Ken Krugler wrote:

>> Danny Epstein wrote:
>>
>>> John Crouch wrote:
>>>
>>>> Char dst[10];
>>>> StrNCopy(dst, "Longer than 10 bytes", 10);
>>>
>> >>dst[9] = 0;
>> >
>>
>>> As John Marshall said, check the docs. This code won't work with 
>>> multi-byte
>>> characters because the last statement might be zeroing the second 
>>> byte of a
>>> two-byte character. If you want your code to work with multi-byte
>>> characters, don't let StrNCopy see the entire buffer:
>>>
>>> Char dst[10];
>>> StrNCopy(dst, "Longer than 10 bytes", 9); // save the last byte
>>> dst[9] = 0;
>>>
>>> The last two lines could go in either order; they operate on 
>>> adjacent, but
>>> non-overlapping areas in memory. This works because of how StrNCopy 
>>> deals
>>> with clipping. If a two-byte character doesn't quite fit, the 
>>> "extra" byte
>>> is zeroed.
>>>
>>> James wrote:
>>>
>>>> Another method is to initialize dst[0] = '\0' and then use StrNCat 
>>>> instead
>>>> of StrNCopy.
>>>>
>>>
>>> That's what I do.
>>> -- 
>>> Danny @ PalmSource
>>>
>> of course, this assumes a two byte character set...
>
>
> I think this will also work for an encoding such as UTF-8, which might 
> have three or even four bytes per character. In that case, if the 
> string you were copying was composed of characters with the following 
> number of bytes:
>
> <1><1><1><1><1><1><1><3>
>
> And you called StrNCopy(dst, string, 9), then what StrNCopy would do 
> is copy the first seven bytes, and pad the remaining two bytes with 
> nulls.
>
>> I was under the
>> impression that some SJIS characters are up to 4 bytes....have I been
>> misinformed?
>
>
> Yes. The Shift-JIS character encoding uses one or two bytes per 
> character.
>
>> BTW...any chance of a Palm device using UTF-8 character sets?
>
>
> Yes. The major hurdle is how to allow older apps with legacy-encoded 
> data to continue working properly on a device where the base character 
> encoding is something different.
>
> -- Ken

FYI...according to the PHP reference manuals, a UTF-8 character can be 
up to 6 bytes long....I would assume this is a UTF-8 attribute rather 
than something to do with PHP

-- 
------------------------------------------------------------------------
James Barwick
VP Technology

????????????
?????????????????
Sentient Health Japan, KK
Aoyama Palacio Tower 11F
3-6-7 Kita-Aoyama
Minatu-ku, Tokyo 107-0061

????????????????????
?107-0061 ???????3-6-7
????????? 11?
Tel: (03) 5778-7524
Fax: (03) 5778-7676
mailto:[EMAIL PROTECTED]
http://www.sentienthealth.com
Tel: (03) 5778-7524
Fax: (03) 5778-7676
mailto:[EMAIL PROTECTED]
http://www.sentienthealth.com
------------------------------------------------------------------------


_
_




-- 
For information on using the Palm Developer Forums, or to unsubscribe, please see 
http://www.palmos.com/dev/support/forums/

Reply via email to