Comportamento estranho com caracteres Unicode no Windows


1

Ok, eu não sei se isso é uma questão de programação, mas certamente é técnico, então estou perguntando aqui. Eu estava trabalhando em algumas coisas de internacionalização no meu código PHP, e para garantir que o meu HTML gerado mostrasse o Unicode corretamente baseado na codificação e coisas que eu decidi adicionar algum texto em chinês para a minha página PHP, que ecoa no navegador para completar o meu caso de teste.

Então eu entrei no google e digitei "chinês", copiei o primeiro texto chinês que a pesquisa retornou (que era 汉语/漢語). Eu então copiei para o Notepad++meu editor e, para minha surpresa, apareci como caixas semelhantes [][]/[][]. Então eu pensei que a codificação Notepad++estava bagunçada e mudei a codificação para UTF-8e UCS, nem funcionou. Eu fiz isso fresco em um arquivo recém-codificado, ainda tenho as caixas. O mesmo conteúdo quando eu colo Googlee StackOverFlow(como eu fiz nesta postagem) mostra chinês correto!

Eu até abri Windows Clipboard Viewere o conteúdo é representado na área de transferência como caixas! Eu tentei colá-lo Windows Explorer address bare usar para renomear um arquivo para, mas eu ainda recebo caixas. Mas aparece corretamente quando colado no meu Chrome Browser address bar!

Isso é um problema do Windows? Desde que eu sou capaz de colá-lo corretamente em SO, os dados na memória devem ser codificados corretamente, certo? Mas se esse for o caso, por que aparece como caixas no Visualizador da Área de Transferência?

Estou confuso aqui ... Pelo jeito que estou usando Windows XP with SP3.

(Estou fazendo esta pergunta aqui, mesmo que não seja programático, porque está me impedindo de executar meus casos de teste de programação ..)

Respostas:


0

A razão pela qual o Notepad ++ não mostra os caracteres certos é provavelmente porque a codificação do documento era “ANSI”. Como os caracteres chineses não são representáveis ​​em “ANSI”, eles foram alterados. O Notepad ++ funciona de forma estranha com as codificações. Mas a solução simples é definir, através de seus menus, a codificação para UTF-8 antes de colar qualquer coisa.

Em outros contextos, a exibição de caracteres chineses pode falhar porque a renderização usa uma fonte que não os contém. Há uma grande variação aqui. Muitos programas podem retornar a outras fontes se a fonte principal não contiver algum caractere que apareça no texto.


Mesmo que o problema não seja resolvido, sua resposta faz sentido ... obrigado. Eu tive que consertá-lo criando um formulário e copiando os caracteres nele e depois imprimindo.

Isso deveria ser isso. Muitas vezes tenho esse problema com o Notepad ++. Depois de alterar a codificação de ANSI para UTF-8, você terá que RE-COPY o texto - basta apenas colar novamente não é suficiente.

1

Com uma cópia em inglês do Windows XP, você precisa informar explicitamente ao Windows se deseja suporte adicional para scripts mais complexos. Eu não tenho uma caixa de XP na minha frente, mas tente iniciar no Painel de Controle -> Configurações Regionais, e procure por opções para instalar o suporte de texto internacional. Você pode precisar da sua mídia de instalação original.

Esta etapa instalará fontes e tabelas adicionais de que o Windows precisa. Você vê isso funcionando em páginas da web porque os navegadores da era do XP tendem a fazer um monte de trabalho por conta própria. A maioria dos outros aplicativos espera que o Windows faça toda a vinculação de fonte e trabalho de fallback de fonte, e o Windows XP não instala todo esse suporte por padrão.

Acredito que versões mais recentes do Windows, como o Vista e o 7, instalem todas as fontes e tabelas por padrão.


Obrigado pela sugestão Adrian - eu certamente vou dar uma olhada!
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.