Re: locale/LC_CTYPE vs strcasecmp?

Liste des GroupesRevenir à cubf misc 
Sujet : Re: locale/LC_CTYPE vs strcasecmp?
De : naddy (at) *nospam* mips.inka.de (Christian Weisgerber)
Groupes : comp.unix.bsd.freebsd.misc
Date : 26. Mar 2024, 21:47:03
Autres entêtes
Message-ID : <slrnv069hn.tsn.naddy@lorvorc.mips.inka.de>
References : 1
User-Agent : slrn/1.0.3 (FreeBSD)
On 2024-03-26, Winston <wbe@UBEBLOCK.psr.com.invalid> wrote:

The man page says strcasecmp_l() takes an explicit locale.
The implication is that strcasecmp() uses the current locale
(presumably as set by setlocale()).

Yes.
src/lib/libc/string/strcasecmp.c:

     57 int
     58 strcasecmp(const char *s1, const char *s2)
     59 {
     60         return strcasecmp_l(s1, s2, __get_locale());
     61 }

After calling setlocale(LC_ALL, "uk_UA.UTF-8"), I'm seeing that
strcasecmp() is not, in fact, case-independently matching non-ASCII
UTF-8 strings: it's case sensitive (the ASCII equivalent in this
case being that "Abc" isn't matching "abc").

UTF-8 characters are multibyte.  You need to convert the strings
to wide characters and use wcscasecmp().

--
Christian "naddy" Weisgerber                          naddy@mips.inka.de

Date Sujet#  Auteur
26 Mar 24 * locale/LC_CTYPE vs strcasecmp?3Winston
26 Mar 24 `* Re: locale/LC_CTYPE vs strcasecmp?2Christian Weisgerber
27 Mar 24  `- Re: locale/LC_CTYPE vs strcasecmp?1Winston

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal