Como posso fazer uma String com caracteres cirílicos exibidos corretamente?

votos
1

No Mac OS X 10.5 com Java 1.5, eu tenho este trecho de código.

public static void main(String[] args) {
    String name = Алексей;
    System.out.println(name =  + name);
}

A saída é:

name = ???????

Eu esperava ver:

name = Алексей

Como posso fazer isso acontecer?

Publicado 30/05/2009 em 12:21
fonte usuário
Em outras línguas...                            


4 respostas

votos
5

Há dois potenciais problemas aqui. Primeiro, você tem caracteres cirílicos em seu código fonte. Isso significa que você tem que garantir a codificação que você usou para armazenar o arquivo é a mesma que a utilizada pelo compilador. Confira o javac manpage para ver o que a sua codificação padrão é, e / ou como especificar uma codificação específica. Ou, use Unicode escapa dentro de sua corda.

Segunda possibilidade é que a sua fonte de terminal não exibe os caracteres cirílicos. Eu não acho que isso é o que está acontecendo, no entanto, uma vez que (1) você é capaz de ver os caracteres no código fonte, e (2) Eu acredito que falta glifos renderizados como blocos, codificações incorretos tornar como pontos de interrogação.

Para testar, basta substituir a sua string com o Unicode correto escapa, e verificar que os caracteres render em sua tela.

Respondeu 30/05/2009 em 12:26
fonte usuário

votos
3

Se você usar o Console classe em vez de System.out, e você é realmente muita sorte, você DEVE ser capaz de obter o console para imprimir os caracteres cirílicos.

Mas, em geral, consoles não têm um bom suporte conjunto de caracteres.

Seria muito mais confiável para a saída de sua seqüência de alguma outra forma, por exemplo, imprimi-lo a um componente Swing.

Respondeu 30/05/2009 em 14:33
fonte usuário

votos
2

Graças a todas as idéias úteis.

Acontece que a chave para o meu problema era a seguinte frase:

No Mac OS X 10.5 com Java 1.5, eu tenho este trecho de código

O IDE que estou usando, IntelliJ IDEA foi explicitamente definindo a codificação de arquivo para MacRoman. Ao alterar a codificação do projeto para UTF-8, o problema foi resolvido sem qualquer alteração de código.

Respondeu 31/05/2009 em 08:54
fonte usuário

votos
1

Se a seqüência é tenho dinamicamente a partir de algum lugar e você precisa ter certeza de que está codificado como você precisar, use alguns dos construtores de classe da corda que levam tipo Charset como parâmetro para converter essa string.

Respondeu 30/05/2009 em 21:25
fonte usuário

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