LINUX.ORG.RU

это то же самое, что POSIX локаль

grem ★★★★★
()

C

Минимальная локализация. Хотя хз про что ты конкретно говришь

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от scanner

А вот что за локаль такая C?

Грубо говоря локаль «без локали», когда все функции начинают работать как в чистом C, не знающем ничего, кроме английского и ascii.

atrus ★★★★★
()
Ответ на: комментарий от scanner

Помнится, в ней разделитель целой и дробной части - точка, а не идиотская запятая как в русской локали.

Хотя я последнее время в LO Calc для чисел юзаю армянскую локаль: там разделители тысяч – пробелы, а не запятые с апострофами.

dimgel ★★★★★
()
Последнее исправление: dimgel (всего исправлений: 1)
Ответ на: комментарий от anonymous

Само собой. То единственное, что мне иногда приспичивает измерять, в целых метрах к сожалению не выражается.

dimgel ★★★★★
()

C locale - это локаль, отрицающая жизнь за мкадом существование других языков и народов, кроме американского: все символы лежат в пределах 7-битного ASCII.
С появлением интернета американцы всё-таки узнали, что на этой планете живут ещё какие-то ушлёпки, которые пишут непонятные буквы, но к тому времени язык Си уже был написан, POSIX стандартизирован, и вообще поздняк метаться и негоже традиции нарушать.

Egor_
()
Ответ на: комментарий от dimgel

На футы вместо идиотских метров уже перешёл?

То единственное, что мне иногда приспичивает измерять, в целых метрах к сожалению не выражается

да ты гигант!
мой даже в футах целым числом не выражается )))

Egor_
()
Ответ на: комментарий от DllMain

эт то же самое, только без UTF-8

Нет же

Поддерживаю. Данная локаль распространяется только на внутренности проги, но не фс и еже (русские имена файлов? да запросто).

anonymous
()
Ответ на: комментарий от scanner

вы что-то путаете
локаль не занимается вопросами кодировки текста
локаль определяет, например, как перевести символ из строчного в прописной, как отсортировать строки по алфавиту, какой символ будет десятичной точкой (не угадаете какой - получите ошибку при переводе строки в число, лол)

кодировка - это свойство объекта, а не локали. любой объект, хранящий внутри себя текст, сам определяет, в какой кодировке он его хранит.
оффтопик - это хороший пример ОС, в которой вопросы локали и кодировки задизайнены наиболее правильно. например, локаль у ОС - русская. а кодировки - в разных местах разные: когда вы вызываете функцию открытия файла, то имя файла должно быть в 1251, когда вы выводите текст в консоль, то 866, файловая система хранит внутри себя имена файлов в UTF16, а текстовый редактор прекрасно работает с файлами в UTF32 (он видит кодировку из BOM), и всё это работает одновременно, под одной локалью!

но линуксоидам не всегда бывает очевидно, что кодировка - атрибут объекта. это всё потому, что линукс - как студент на экономном пайке: одна картошка, одна котлета, один язык программирования и одна кодировка, и не видно перспектив на лучшую жизнь. правда, благодаря перлу в линуксе всё-таки появился ЯП №2, а в последние годы и вовсе стало получше с языками, но насчёт кодировок линукс всё ещё «в танке»: кодировка должна быть одна.

запись C.UTF-8 объединяет два разных параметра (локаль и кодировку) в один. вероятно, так сделали затем, чтобы подчеркнуть зависимость второго параметра от первого (локаль определяет, из каких значений может быть выбрана кодировка)

в локали C нет никаких правил насчёт символов за пределами ASCII7, какая бы кодировка не была выбрана.

Egor_
()
Ответ на: комментарий от Egor_

Да у него дюйм, не расстраивайся.

anonymous
()
Ответ на: комментарий от Egor_

да ты гигант! мой даже в футах целым числом не выражается )))

Понятия не имею о чём вы. [морда_кирпичом.jpeg]

Да у него дюйм, не расстраивайся.

)))))

dimgel ★★★★★
()
Последнее исправление: dimgel (всего исправлений: 1)
Ответ на: комментарий от Egor_

Если бы не хрущёв, то сейчас бы этим стандартом была бы кириллица.

gtk3 ★★★
()
Ответ на: комментарий от anonymous

Ставь себе локаль КОИ8-Р и не парь мозг!

А также пусть ставит себе Сижку, и выкидывает Хрюникод и Культяпки, да, Эдик?

Разорванный Флакон

anonymous
()
Ответ на: комментарий от Egor_

В C и производные её приляпали, так что не только.

In computing, a locale is a set of parameters that defines the user's language

Остаётся вспомнить доюникодные времена. Скорее всего поэтому и совместили

DllMain
()
Ответ на: комментарий от DllMain

в цэ и цэпэпэ локаль - это только язык и территория
пример: setlocale(LC_ALL, "en_GB")

локаль и кодировка слиплись вместе только в юниксах (в переменных окружения, в конфиг-файлах и т.д.)

Egor_
()
Ответ на: комментарий от Egor_

слиплись вместе только в юниксах

Никуда оно не слиплось. Просто такое соглашение, чтобы как-то различать локали, рассчитанные на разные кодировки. Технически название локали это литерал, он никакой структуры не имеет.

кодировку туда зачем-то приляпали только в юниксах

Кодировку учитывать необходимо, потому что в разных кодировках будет разный порядок сортировки и байтики которые обозначают дни недели, месяцы и т.д.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Кодировку учитывать необходимо

Да, конечно необходимо, если хочешь работать с текстом
А никто и не говорил, что локаль - это всё что потребуется
Локаль смотрит на текст как на набор СИМВОЛОВ, а не байтов
Переводом символов в байты занимается другой компонент - кодировка
И для работы с текстом нужны оба этих компонента

Egor_
()
Ответ на: комментарий от Egor_

Таки я не поверю

Generally, the pattern - is used

Это соглашение. Оно ничего не определяет технически. Только то, чтобы название локали совпадало везде.

no-such-file ★★★★★
()

Вроде бы локаль Си, это где точка отделяет целую часть числа от дробной. А не как у нас в Германии и в остальных нормальных странах (включая даже Хохлэнд, который на нас ровняется) – православная запятая.

anonymous
()
Ответ на: комментарий от Egor_

в цэ и цэпэпэ локаль - это только язык и территория

Нет. В це оно не так ярко выражено, а в крестах отдельный компонент локали есть, который именно перекодировкой и занимается

DllMain
()
Ответ на: комментарий от scanner

ну как же, это единственная локаль с которой линукс будет нормально работать.

 *** WARNING *** The locale specified by the environment affects sort order.  Set LC_ALL=C to get the traditional sort order that uses native byte values.

(c) man sort

но я рекомендую LC_ALL=C.utf8 все-таки

zendrz ★★
()
Последнее исправление: zendrz (всего исправлений: 1)
Ответ на: комментарий от Egor_

а кодировки - в разных местах разные: когда вы вызываете функцию открытия файла, то имя файла должно быть в 1251, когда вы выводите текст в консоль, то 866, файловая система хранит внутри себя имена файлов в UTF16, а текстовый редактор прекрасно работает с файлами в UTF32 (он видит кодировку из BOM), и всё это работает одновременно, под одной локалью!

А пистолет то, пистолет пользователям этой замечательной феерии шизоидного бреда выдают??? Иначе как им себя от этого избавить?

curufinwe ★★★★★
()
Ответ на: комментарий от scanner

если ты не очень понял иронии, то скажу прямо - с ней sort будет работать лучше, да.

zendrz ★★
()
Ответ на: комментарий от DllMain

из чего ты сделал вывод, что POSIX основан на стандарте ЯП C

Egor_
()
Ответ на: комментарий от scanner

но я рекомендую LC_ALL=C.utf8 все-таки

Она лучше чем ru_RU.UTF-8?

конечно!
там десятичная точка, а там - запятая

Egor_
()
Ответ на: комментарий от curufinwe

А пистолет то, пистолет пользователям этой замечательной феерии шизоидного бреда выдают??? Иначе как им себя от этого избавить?

лицам с неустойчивой психикой, теряющим рассудок от взгляда на многообразие возможностей винды, пистолет не выдают
вместо этого им выдают линукс, где кодировка только одна, и поэтому пациентам так спокойнее

но спокойнее - не значит проще )))
недавно я поинтересовался, как в линуксе сделать глобальный именованный мьютекс, чтобы два процесса могли разграничить доступ к общему ресурсу, если оба знают имя мьютекса
в винде для этого всего три функции: CreateMutex, WaitForSingleObject, ReleaseMutex, всё просто и естественно.
в линуксе без слёз не взглянешь: функции работы с мьютексами не могут открыть мьютекс по имени (позор!), для координирования работ всем заинтересованным сторонам нужно иметь ссылку на один и тот же мьютексный объект в памяти. это легко сделать для нескольких ветвей внутри одного процесса, но как это сделать из двух разных процессов (т.к. у них разные адресные пространства)?
бедолагам рекомендуют доставать гланды через жопу: они по общему имени открывают шареную память, размещают там мьютексный объект, созданный со специальными атрибутами, и уже на этот общий объект дают ссылку при вызове мьютексных функций, итого получается 11 функций: shm_open, ftruncate, mmap, pthread_mutexattr_init, pthread_mutexattr_setpshared, pthread_mutex_init, pthread_mutexattr_destroy, pthread_mutex_lock, pthread_mutex_unlock, pthread_mutex_destroy, shm_unlink.
иногда мне кажется, что линукс дизайнил человек, ненавидящий программистов.
и теперь я хочу спросить, где выдают пистолет для линуксоидов?

Egor_
()
Ответ на: комментарий от Egor_

как в линуксе сделать глобальный именованный мьютекс, чтобы два процесса могли разграничить доступ к общему ресурсу, если оба знают имя мьютекса

Это похоже на некорректную постановку задачи - в условии задачи уже содержится неоптимальное для одной из систем решение (сделать глобальный именованный мьютекс).

Для начала надо убрать из условия навязанное решение, и ответить на вопрос - как в linux оптимальнее решить задачу «разграничить доступ к общему ресурсу».

бедолагам рекомендуют

А кто рекомендует, если не секрет?

curufinwe ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.