Qual é a codificação de caracteres padrão?

8

Eu mesmo não sei até que ponto essa pergunta é realmente profunda (por exemplo, pelo que sei, pode haver várias, dependendo da minha tarefa).

Particularmente, estou interessado em que tipos de strings são usados ​​para nomear arquivos e pastas no sistema.

Também estou interessado em como as strings são representadas por padrão para um script bash ou python.

gabkdlly
fonte
Essa é uma boa pergunta, especialmente se você se converteu no Windows e contribui com código-fonte para algum sistema de controle de versão. Depois de mudar para o Ubuntu, você pode repentinamente experimentar caracteres especiais ilegíveis, porque o Windows normalmente não usa UTF-8.
Bananeweizen

Respostas:

3
  • A codificação dos nomes de arquivos no sistema de arquivos é utf-8.
  • Bash pensa em bytes, não com strings-com-codificação-conhecimento. Portanto, nenhuma codificação padrão. A codificação padrão do gnome-terminal é utf-8
  • A codificação padrão do Python é ascii
Dennis Kaarsemaker
fonte
Python 3 (eu acho?) Está mudando para strings unicode por padrão.
Broam 30/08/10
O tipo str () do Python 3 é um objeto unicode na codificação UCS-2 ou UCS-4 internamente. Como os dados são lidos ou gravados de, por exemplo, arquivos e stdin, devem ser determinados pelo desenvolvedor do aplicativo / biblioteca, com utf-8 sendo padrão (por exemplo, print (some_str) imprimirá uma representação utf-8).
Dennis Kaarsemaker
O Python 3 será unicode como Ruby 1.9 Python 2 e menos, como Ruby 1.8 e menos, são baseados em ASCII e funcionam com todos os conjuntos de caracteres, mas sua idéia sobre contagem de caracteres para cadeias de caracteres Unicode está errada. (o que geralmente não é um problema)
Ralf
3
O gnome-terminal não é o padrão para utf-8; ele usa apenas o local que seu local está definido. (Como eu descobri da maneira mais difícil recentemente.)
frabjous
11
@DennisKaarsemaker Não, o Python3 não deixa a codificação apenas para o desenvolvedor e usa o padrão UTF-8. Stdin e -out, por exemplo, usam a codificação do ambiente por padrão!
Robert Siemer
7

A codificação de caracteres padrão é UTF-8 (Unicode), embora quase todos os nomes de arquivos (possivelmente todos em uma instalação padrão) sejam caracteres ASCII comuns, comuns à maioria das codificações.

Não sei o que você quer dizer com "quantas seqüências de caracteres são representadas por um script bash ou python". Você pode usar caracteres Unicode em scripts bash no Ubuntu, mas geralmente com um script bash, você chama outros programas, e se esses outros programas os tratam é outra questão. Certamente também é possível fazer isso com o Python, embora você queira se familiarizar com os pacotes e configurações relacionados a ele.

frabjous
fonte