В чем разница между локалями C.UTF-8 и en_US.UTF-8? - PullRequest
0 голосов
/ 14 апреля 2019

Я переношу приложение python с сервера Ubuntu с языковым стандартом en_US.UTF-8 на новый сервер Debian, который поставляется с C.UTF-8, уже установленным по умолчанию.Я пытаюсь понять, будет ли какое-либо влияние, но не смог найти хороших ресурсов в интернете, чтобы понять разницу между ними.

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Обычно C для компьютера, en_US для людей в США, говорящих по-английски (и других людей, которые хотят того же поведения).

для компьютера означаетчто строки иногда более стандартизированы (но все еще на английском языке), поэтому выходные данные программы могут быть прочитаны из другой программы.С en_US можно улучшить строки, улучшить алфавитный порядок (возможно, по новым правилам чикагских правил стиля и т. Д.).Так что более удобный, но, возможно, менее стабильный.Примечание: локали предназначены не только для перевода строк, но и для сопоставления (алфавитный порядок, числа (например, разделитель тысяч), валюта (я думаю, можно с уверенностью предсказать, что $ и 2 десятичных знака останутся), месяцы, день неделии т. д.

В вашем случае это всего лишь версия UTF-8 для обоих языков.

В общем, это не должно иметь значения. Обычно я предпочитаю en_US.UTF-8, но обычно этоне имеет значения, и в вашем случае (серверное приложение) он должен только изменять журнал и сообщения об ошибках (если вы используете locale.setlocale(). Вы должны обрабатывать языковые стандарты клиента внутри вашего приложения. Программы, которые читают из других программ, должны установить Cперед открытием канала, поэтому это не должно иметь большого значения.

Как видите, возможно, это не имеет значения. Вы также можете использовать POSIX locale, также определите в Debian. Вы получите список установленных локалейс locale -a.

Примечание. Микрооптимизация будет предписывать C / C.UTF-8 языковой стандарт: нет перевода файлов (gettext) и простые правила сопоставления и форматирования чисел, ноэто должно быть видно только на стороне сервера.

1 голос
/ 14 апреля 2019

Может иметь место некоторое влияние, поскольку они различаются по порядкам сортировки, отношениям в верхнем и нижнем регистре, порядкам сортировки, разделителям тысяч, символу валюты по умолчанию и т. Д.

C.utf8 = Соответствующий стандартам POSIX языковой стандарт по умолчанию.Допустимы только строгие символы ASCII, расширенные для базового использования UTF-8

en_US.utf8 = американский английский UTF-8.

Хотя я не уверен насчет конкретного эффекта, с которым вы можете столкнуться, но я полагаю, что при необходимости вы можете установить локаль и кодировку внутри приложения.

...