O código fonte deve ser salvo no formato UTF-8

Qual é a importância de salvar seu código-fonte no formato UTF-8?

O Eclipse no Windows usa a codificação de caracteres CP1252 por padrão. O formato CP1251 significa que caracteres não UTF-8 podem ser salvos e vi isso acontecer se você copiar e colar de um documento do Word para um comentário.

A razão que eu pergunto é porque fora do hábito eu configurei a codificação Maven para estar no formato UTF-8 e recentemente ele detectou alguns erros não mapeáveis.

(atualização) Por favor, adicione quaisquer razões para fazê-lo e por que, existem algumas dicas comuns que devem ser conhecidas?

(atualização) Qual é o seu objective? Para encontrar a melhor prática, então quando perguntar por que devemos usar UTF-8, eu tenho uma boa resposta, agora eu não faço.

Qual é o teu objective? Equilibre suas necessidades com os prós e contras dessa escolha.

UTF-8 Pros

  • permite o uso de todos os literais de caracteres sem o escape de \uHHHH

UTF-8 Contras

  • usando literais de caracteres não-ASCII sem \uHHHH aumenta o risco de corrupção de caracteres
    • problemas de fonte e teclado podem surgir
    • precisa documentar e impor o uso de UTF-8 em todas as ferramentas (editores, compiladores, scripts de construção, ferramentas de diferenças)
  • Cuidado com a marca de ordem de byte

Prós ASCII

  • os mapeamentos de caracteres / bytes são compartilhados por uma ampla gama de codificações
    • torna os arquivos fonte muito portáteis
    • frequentemente evita a necessidade de especificar metadados de codificação (uma vez que os arquivos seriam idênticos se fossem recodificados como UTF-8, Windows-1252, ISO 8859-1 e a maioria das coisas com menos de UTF-16 e / ou EBCDIC)

ASCII Contras

  • conjunto de caracteres limitados
  • esta não é a década de 1960

Nota: ASCII é de 7 bits, não “estendido” e não deve ser confundido com o Windows-1252, ISO 8859-1 ou qualquer outra coisa.

Importante é pelo menos que você precisa ser consistente com a codificação usada para evitar arenques. Assim não, X aqui, Y ali e Z em outro lugar. Salvar código-fonte na codificação X. Definir input de código para codificação X. Definir saída de código para codificação X. Definir transferência FTP baseada em caractere para codificação X. Etcetera.

Hoje em dia, o UTF-8 é uma boa escolha, pois abrange todos os personagens que o mundo humano conhece e é bastante suportado em qualquer lugar. Então, sim, eu definiria a codificação do espaço de trabalho também. Eu também uso isso.

A configuração padrão do Eclipse de usar a codificação padrão da plataforma é uma IMHO de má decisão. Achei necessário alterar o padrão para UTF-8 logo após instalá-lo, porque alguns dos meus arquivos de origem existentes o usavam (provavelmente a partir de fragments copiados / colados de páginas da Web.)

A linguagem Java e as especificações da API exigem suporte a UTF-8, então você definitivamente está bem no que diz respeito às ferramentas padrão e já faz muito tempo desde que eu vi um editor decente que não suportava UTF-8.

Mesmo em projetos que usam JNI, suas origens C normalmente estarão em US-ASCII, que é um subconjunto de UTF-8, portanto, ter ambas abertas no mesmo IDE não será um problema.

Sim, a menos que o seu compilador / interpretador não consiga trabalhar com arquivos UTF-8, é definitivamente o caminho a ser seguido.

Eu não acho que há realmente uma resposta sim ou não para essa pergunta. Eu diria que as seguintes diretrizes devem ser usadas para escolher um formato de codificação, em ordem de prioridade listada (do maior para o menor):

1) Escolha uma codificação de seus suportes de cadeia de ferramentas. Isso é muito mais fácil do que costumava ser. Mesmo na memory recente, muitos compiladores e linguagens basicamente suportavam apenas o ASCII, o que mais ou menos forçava os desenvolvedores a codificar em idiomas da Europa Ocidental. Atualmente, muitos dos idiomas mais recentes suportam outras codificações, e quase todos os editores e IDEs decentes dão suporte a uma lista tremendamente longa de codificações. Ainda assim … há apenas holdouts suficientes que você precisa checar novamente antes de se decidir por uma codificação.

2) Escolha uma codificação que suporte o maior número possível de alfabetos que você deseja usar. Eu coloco isso como uma prioridade secundária porque, francamente, se suas ferramentas não suportam isso, realmente não importa se você gosta da codificação melhor ou não.

UTF-8 é uma excelente escolha em muitas circunstâncias do mundo de hoje. É um formato feio e deselegante, mas resolve toda uma série de problemas (a saber, lidar com código legado) que quebram outras codificações, e parece se tornar cada vez mais o padrão de fato das codificações de caracteres. Ele suporta todos os principais alfabetos, quase todos os editores do planeta o suportam agora, e toda uma série de linguagens / compiladores também o suportam. Mas como eu mencionei acima, há apenas legados suficientes que você precisa checar sua cadeia de ferramentas de ponta a ponta antes de se estabelecer definitivamente.