Pergunta

Se tudo que você vê é o feio não-char caixas, que ferramentas ou estratégias que você usa para descobrir o que deu errado?

(O cenário específico que estou enfrentando é não-char caixas dentro de um <select> quando deve ser mostrando Japonês caracteres.)

Foi útil?

Solução

Em primeiro lugar, "feio não-char caixas" pode não ser um problema de codificação, que pode ser apenas um sinal de que você não tem um tipo de letra instalado, que pode exibir as imagens na página.

A maioria dos problemas de codificação de caracteres acontecer quando as cordas estão a ser transmitidos a partir de um sistema para outro.Para webapps, este é, geralmente, entre o navegador e o aplicativo, entre a aplicação e o sistema de ficheiros entre a aplicação e o banco de dados.

Então, você precisa verificar onde o mis-dados codificados é vindo, que a codificação de caracteres que tem na fonte, e a codificação que está sendo recebida.A melhor forma é enviar por meio de caracteres que você sabe que o sistema está com problemas, e examiná-los em cada nível do aplicativo.O que eles se parecem dentro do app?No banco de dados?Quando você pegá-los de volta a partir do banco de dados?Quando eles são exibidos no navegador?

Desculpe por ser tão geral, mas a questão não se dão muito mais para trabalhar com.

Outras dicas

Se os dados que você enviar para o navegador fica desconfigurado (moji-assar) você vai obter lixo caracteres.Além disso, se você especificar o conjunto de caracteres errado em sua META cabeçalhos, o seu navegador irá renderizar a página incorretamente, fazendo com que moji-assar, novamente, às vezes em lugares aleatórios na página.

Ao manusear CJK conjuntos de caracteres, você deve certifique-se de usar a codificação de caracteres UTF8 por todo o tempo de vida do programa (dados de armazenamento, recuperação, manipulação de dados em seu código, exibindo no browsser etc...)

O que é UTF8? UTF8 lida com fluxos binários de dados, não com cadeias de caracteres.Isso significa que a combinação de bit pode ter tamanho variável.Caracteres ASCII tem um comprimento fixo de 8 bits que representam 1 byte, no entanto caracteres UTF8 pode ser composto por 6bits, 8bits, 12bits, etc...Como tal, UTF8 é propenso para o que Japonesa chamada "mojibake".

Como um programador, a partir de banco de dados para codebase navegador, você deve tentar usar UTF8 completamente.Por e-mail você pode usar UTF8, mas provavelmente você vai encontrar a maioria dos servidores de e-mail e os clientes ainda são antigas e usar uma mistura de diferentes conjuntos de caracteres (por exemplo,ISO9022X).

Configurações Do Banco De Dados Se você é um usuário do mysql, em seguida, certifique-se de que você tem que garantir que todas as conexões para o DB usar UTF8, e que todas as tabelas/campos de usar UTF8.Por padrão, o mysql usa latina (sueco) conjuntos de caracteres.Aqueles excêntrico suecos amo seu senso de humor!!

A verificação de sua base de código Na minha experiência de editores como o Notepad++, Notepad2, UltraEdit, e, etc...todos têm suporte a UTF8 problemas.Eles trabalham principalmente, mas desde que seus desenvolvedores não usam idiomas CJK em si mesmas, elas não são perfeitas.Questões como desligar BOM (Marca de Ordem de Byte), mutilado guias, pobres conversão de conjunto de caracteres, etc ...todos os problemas atuais.

Eu recomendo usar um comprovada UTF8 editor como Maruo.Isso é feito por uma empresa Japonesa, mas há uma versão em inglês (e uma versão de teste) em http://www.hidemaru.interlink.or.jp/software/

Por último, você precisa converter seus arquivos de origem em UTF8.Especialmente se a base de código em si tem CJK linguagem de cadeias de caracteres nele contido.

A Manipulação De Cadeias De Caracteres Qualquer função de seqüência de caracteres precisa multibyte seguro.Repare que eu não disse de byte duplo.UTF8 não é um byte duplo, mas multibyte, dependendo do número total de bits usados para representar um caractere.No PHP, você precisa chamar o MB funções de seqüência de caracteres especificamente.Ruby e outras linguagens de ter mais apoio transparentes, mas você precisa verificar os documentos para o seu sabor de servidor de aplicativos!

META Tags Confira google.co.jp ou yahoo.co.jp para a sua META cabeçalhos.Estes são os locais que sabe como adequadamente.Basicamente, a seguinte META tag o doucment <HEAD>

charset=utf-8">

É geralmente seguro para misturar o inglês documento HTML atributos de tipo com o acima do personagem também.Assim que adicionar a META tag acima parece funcionar em um documento HTML que tem:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

E-mail Esta é uma situação completamente diferente lata de vermes.UTF8 trabalha muito, mas muitos mais velhos clientes Japoneses usar ISO2022X mais.Este não é vale a pena abordar aqui.

A depuração de Problemas UTF8 Uma vez que você tem uma confiança UTF8 editor como Maruo, você pode criar páginas estáticas e resolver seus problemas.

Espero que ajude

Redirecionar os dados para o disco e usar um Editor Hexadecimal.A maioria dos editores de texto / os espectadores de suas próprias conversões nos bastidores, por isso, é difícil ter certeza de que você está vendo os dados em sua forma verdadeira.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top