Автор Тема: Какво точно означава C locale, ами 'en_US.UTF-8' и кое да ползвам.  (Прочетена 14200 пъти)

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Ползвам един външен PHP проект, който обаче преебава кирилицата.
Обаче ако се зададе предварително  setlocale(LC_CTYPE,'C'); се оправя.


Код
GeSHi (PHP):
  1. // setlocale(LC_CTYPE,'bg_BG.UTF-8');
  2. // setlocale(LC_CTYPE,'C');
  3. setlocale(LC_CTYPE,'en_US.UTF-8');
  4.  
  5. print  external_func('Abcdef-Абвгдж');
  6.  

резултат без зададен лоакл:
"Abcdef-А��вгд��"

резултат със зададен лоакл:
'Abcdef-Абвгдж'

Интересното е, че работи правилно и с трите локала 'bg_BG.UTF-8', 'C', 'en_US.UTF-8'
При тях работи правилно и на кирилица и даже на гръчки.
Кой локал да ползвам. 'C' какво точно означава??? разбирам че 'C' не ми гарантира utf-8, но все пак работи. Не е ли по-правилно 'en_US.UTF-8'  ???
« Последна редакция: Aug 01, 2019, 14:49 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8780
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
По принцип е приета конвенция при Ц (демек аски) за по-големите кодове да се ползва подразбиращото разширение. Демек при теб трябва да е цп1251, малко вероятно и 8859-5.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Всичко ми е на utf-8 и скриптовете и стринга 'Abcdef-Абвгдж'. Aз бягам от cp1251.

В действителност точно горният пример преебава на setlocale(LC_CTYPE,'bg_BG.cp1251'); затова се чудя кое utf-8 локале да ползвам.
Активен

Perl - the only language that looks the same before and after encryption.

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8780
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Сега виждам, че идват с две питанки на буква. Убеден ли си, че онова не идва с UTF-16???
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Онова използва разни PHP стрингови функции които са locale зависими - затова се дъни....и затова се оправя.
Не използва никакви mb_xxxxx() функции както би се полагало. Също използва много pcre изрази, които също са аscii....Не са /fsdfsfsd/u с 'u' модификатор накрая.

Но на мен не ми се оправя чужд софтуер.
 
« Последна редакция: Aug 01, 2019, 16:28 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

4096bits

  • Напреднали
  • *****
  • Публикации: 6152
    • Профил
Баси! Мислех, че всичко вече е Unicode.
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

Yasen6275

  • Напреднали
  • *****
  • Публикации: 553
    • Профил
Всичко ми е на utf-8 и скриптовете и стринга 'Abcdef-Абвгдж'. Aз бягам от cp1251.

В действителност точно горният пример преебава на setlocale(LC_CTYPE,'bg_BG.cp1251'); затова се чудя кое utf-8 локале да ползвам.
bg_BG.UTF-8 например?
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
Всичко ми е на utf-8 и скриптовете и стринга 'Abcdef-Абвгдж'. Aз бягам от cp1251.

В действителност точно горният пример преебава на setlocale(LC_CTYPE,'bg_BG.cp1251'); затова се чудя кое utf-8 локале да ползвам.
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.....е това не го разбирам.
« Последна редакция: Aug 03, 2019, 11:19 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8780
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Ако е така, то П4П чупи конвенция по-стара от Юникс (колкото е стар Ц). Аз не бих взел такова решение.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

Naka

  • Напреднали
  • *****
  • Публикации: 3395
    • Профил
в дебиана имам 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 зависими.
« Последна редакция: Aug 06, 2019, 11:23 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
GDM locale
Настройка на програми
int13 7 3593 Последна публикация Mar 17, 2005, 14:23
от rpetrov
Проблем с locale
Настройка на програми
naiden 1 2656 Последна публикация May 07, 2005, 12:05
от rpetrov
yum проблем с Locale
Настройка на програми
Bashev 2 2699 Последна публикация Dec 15, 2005, 01:06
от peio
..x11/locale/locale.alias Правописна грешка?
Хардуерни и софтуерни проблеми
0xAF 13 5653 Последна публикация May 11, 2006, 11:25
от ray
(РЕШЕН) Locale в debian
Настройка на програми
bulg 6 4414 Последна публикация Oct 15, 2008, 10:35
от tolostoi