Титла: Какво точно означава C locale, ами 'en_US.UTF-8' и кое да ползвам. Публикувано от: Naka в Aug 01, 2019, 14:45 Ползвам един външен PHP проект, който обаче преебава кирилицата.
Обаче ако се зададе предварително setlocale(LC_CTYPE,'C'); се оправя. Код
резултат без зададен лоакл: "Abcdef-А��вгд��" резултат със зададен лоакл: 'Abcdef-Абвгдж' Интересното е, че работи правилно и с трите локала 'bg_BG.UTF-8', 'C', 'en_US.UTF-8' При тях работи правилно и на кирилица и даже на гръчки. Кой локал да ползвам. 'C' какво точно означава??? разбирам че 'C' не ми гарантира utf-8, но все пак работи. Не е ли по-правилно 'en_US.UTF-8' ??? Титла: Re: Какво точно означава C locale, ами 'en_US.UTF-8' и кое да ползвам. Публикувано от: go_fire в Aug 01, 2019, 15:09 По принцип е приета конвенция при Ц (демек аски) за по-големите кодове да се ползва подразбиращото разширение. Демек при теб трябва да е цп1251, малко вероятно и 8859-5.
Титла: Re: Какво точно означава C locale, ами 'en_US.UTF-8' и кое да ползвам. Публикувано от: Naka в Aug 01, 2019, 15:56 Всичко ми е на utf-8 и скриптовете и стринга 'Abcdef-Абвгдж'. Aз бягам от cp1251.
В действителност точно горният пример преебава на setlocale(LC_CTYPE,'bg_BG.cp1251'); затова се чудя кое utf-8 локале да ползвам. Титла: Re: Какво точно означава C locale, ами 'en_US.UTF-8' и кое да ползвам. Публикувано от: go_fire в Aug 01, 2019, 16:07 Сега виждам, че идват с две питанки на буква. Убеден ли си, че онова не идва с UTF-16???
Титла: Re: Какво точно означава C locale, ами 'en_US.UTF-8' и кое да ползвам. Публикувано от: Naka в Aug 01, 2019, 16:24 Онова използва разни PHP стрингови функции които са locale зависими - затова се дъни....и затова се оправя.
Не използва никакви mb_xxxxx() функции както би се полагало. Също използва много pcre изрази, които също са аscii....Не са /fsdfsfsd/u с 'u' модификатор накрая. Но на мен не ми се оправя чужд софтуер. Титла: Re: Какво точно означава C locale, ами 'en_US.UTF-8' и кое да ползвам. Публикувано от: 4096bits в Aug 01, 2019, 17:14 Баси! Мислех, че всичко вече е Unicode.
Титла: Re: Какво точно означава C locale, ами 'en_US.UTF-8' и кое да ползвам. Публикувано от: Yasen6275 в Aug 03, 2019, 07:56 Всичко ми е на utf-8 и скриптовете и стринга 'Abcdef-Абвгдж'. Aз бягам от cp1251.bg_BG.UTF-8 например? Титла: Re: Какво точно означава C locale, ами 'en_US.UTF-8' и кое да ползвам. Публикувано от: Naka в Aug 03, 2019, 11:16 Всичко ми е на utf-8 и скриптовете и стринга 'Abcdef-Абвгдж'. Aз бягам от cp1251.bg_BG.UTF-8 например? И с bg_BG.UTF-8 работи правилно. Куриозното е че с bg_BG.UTF-8 работи правилно и с Гръцки. Например за такъв смесен стринг 'Abcdef-Абвгдж-Αανατοσ'; което ме навежда на мисълта че *.UTF-8 е важната част. Но аз само сетвам LC_CTYPE от всичките. Цитат Specifies the locale to use for LC_CTYPE category information. The LC_CTYPE category determines character handling rules governing the interpretation of sequences of bytes of text data characters (that is, single-byte versus multibyte characters), the classification of characters (for example, alpha, digit, and so on), and the behavior of character classes. Интересува ме само екстракването на символите (utf8-multibyte) да е правилно, Не ме интересува сортиране, преобразуване малки и големи букви. На едно място прочетох че C локала не винаги означавало utf8. възможно ли е C лоакла в накои системи да е алиас на 'en_US.UTF-8' а пък в други да е алиас на ASCII.....е това не го разбирам. Титла: Re: Какво точно означава C locale, ами 'en_US.UTF-8' и кое да ползвам. Публикувано от: go_fire в Aug 03, 2019, 11:18 Ако е така, то П4П чупи конвенция по-стара от Юникс (колкото е стар Ц). Аз не бих взел такова решение.
Титла: Re: Какво точно означава C locale, ами 'en_US.UTF-8' и кое да ползвам. Публикувано от: Naka в Aug 06, 2019, 11:07 в дебиана имам C.UTF-8:
locale --all-locales bg_BG.utf8 C C.UTF-8 en_US.utf8 POSIX root@naka:~# Което би означавало точно това, което трябва - да разпознава правилно utf-8. Но в Centos 6 няма C.UTF-8 има само C, което ме навежда в мисълта, че чистото С е алиас най-малкото към някое UTF-8 ??? Ако е така, то П4П чупи конвенция по-стара от Юникс ПХП-то не чупи нищо. Повечето му стрингови функции са директно мапнати към съответните Юникс функции в системата...към glibc ...или където и да е там....затова такива PHP функции са locale зависими. |