Como você lida com codificações diferentes de caracteres?

votos
1

Eu estou tentando compreender os conceitos básicos de programação prática em torno de codificação de caracteres.

Algumas coisas a considerar:

  • Eu sei como ler um arquivo cuja codificação é diferente, e convertê-lo para a codificação do console.
  • Mas quando tento converter strings literais que aparecem no código-fonte, por algum motivo, ela nem sempre funciona:
    • No console da IntelliJ para o clojureidioma (o seu REPL ou intérprete interativo), ele não funciona em todos. Eu não olhar se este console particular é diferente do Java Console padrão do IntelliJ.
    • No Terminal da Apple, que às vezes funciona bem, dependendo a codificação do arquivo de origem.
    • Em Eclipse e NetBeans, ele sempre funciona bem.

Há muitos recursos para aprender sobre Unicode e codificação de caracteres. Mas AFAIK, não há muito a aprender diretrizes de uso prático. Algumas outras questões aqui na StackOverflow têm sido úteis, mas nenhum tem sido suficiente para o que estou tentando fazer.

UPDATE: Eu tenho bastante simplificada esta questão depois de ter entendido como em geral os problemas que estava enfrentando eram. Originalmente, foi direcionada especificamente para a Javaplataforma, com um exemplo de código na clojurelinguagem. Para ver estes, ter um olhar para a primeira versão desta questão.

Publicado 03/04/2009 em 23:32
fonte usuário
Em outras línguas...                            


4 respostas

votos
2

Como um registro do conhecimento que é bom tem que ser capaz de resolver este tipo de problemas, aqui estão alguns destaques:

  1. Verificar a codificação de cada arquivo de seu programa usa . Isso inclui arquivos de origem e arquivos de dados , sejam eles buscado localmente ou em qualquer rede.
    1. Certifique-se de que o que lê os fonte arquivos conhece suas respectivas codificações:
      • Se você usar um IDE , verificar qual codificação que utiliza para suas configurações seguintes:
        • Ampla-IDE codificação
        • Todo o projeto de codificação
        • Largura do módulo de codificação
        • E seu específico do arquivo de codificação.
        • Claro, você provavelmente vai querer padronizar todos eles com uma codificação única.
      • Se você usar qualquer tipo de ferramenta de construção ou compilador fora de uma IDE , verificar suas configurações.
    2. Certifique-se de que o que lê os dados arquivos conhece suas respectivas codificações. Você vai usar os recursos de sua linguagem de programação para decodificar cada arquivo de dados a partir de sua codificação original.
  2. Verificar que codificação é necessário para os usuários de todos os tipos de dados de caracteres seu programa produz. Você vai usar os recursos de sua linguagem de programação para codificar tudo como deve ser:
    • Interface de usuário
    • Os arquivos criados ou modificados pelo seu programa, incluindo:
      • comunicações de rede
      • Os arquivos de log.

As dicas a seguir contribuíram por outras pessoas, pode revelar-se muito útil:

  • Não use a codificação plataforma padrão a menos que você é realmente, realmente certeza de que quero.
  • Prefere formatos que carregam suas próprias informações de codificação . XML é um bom exemplo: Todos os arquivos XML válidos têm uma codificação muito claramente definido; análise eles não depende da codificação sendo especificado por alguns meios externos.

Veja também os seguintes recursos de aprendizagem:

E ampliar o assunto, ver quais as questões impedir que aplicativos Java de trabalhar em múltiplas plataformas? .

Respondeu 06/04/2009 em 19:53
fonte usuário

votos
2

O problema está relacionado à forma como o seu IDE diz o compilador Java para interpretar a codificação do arquivo de origem. (Saída do console pode ser outro problema. Não sei)

Se você executar o programa javac sem argumentos que você obter uma impressão de ajuda (excerto abaixo) que sugere que você a respeito de como ele funciona.

 -encoding <encoding>       Specify character encoding used by source files

Javac interpreta assim o arquivo de origem, com as suas strings literais e tudo, transformando-o em UTF8 eu acho que no código de byte. Tenho certeza de que o compilador Encerramento tem uma opção semelhante.

Em Eclipse, a opção de decidir o que arquivos de origem de codificação tem é em Geral> Área de Trabalho> Arquivo de texto de codificação. Sob a minha máquina Sueco Windows, o padrão escolhido foi CP1252. (Eu não me importo o que está lá desde que eu evitar o uso de caracteres fora ASCII exatamente por esta razão.)

Respondeu 03/04/2009 em 23:57
fonte usuário

votos
1

A -encodingopção de javacinforma ao compilador que codificação de caracteres que a fonte de arquivos usar.

IDEs geralmente o padrão para a codificação de caracteres plataforma, mas pode ser configurado para usar uma codificação que você especificar. Então eles vão mais um passo para que você substituir a codificação em um único arquivo.

Se o seu editor ou IDE é usar algo diferente do padrão da plataforma, então você compilar ou editar os arquivos com uma ferramenta diferente, você precisa ter certeza de ambas as ferramentas têm explicitamente especificado a mesma codificação.

Respondeu 03/04/2009 em 23:58
fonte usuário

votos
1

Além do ponto que o código que você mostra não é Java Eu recomendaria a olhar para UTI ( http://site.icu-project.org/ ) a fonte biblioteca aberta Unicode que está disponível em Java e C ++.

Respondeu 03/04/2009 em 23:36
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more