Pergunta

Estou trabalhando em uma aplicação web, onde transfiro dados do servidor para o navegador em XML.

Como sou dinamarquês, rapidamente tenho problemas com os personagens æøå.

Eu sei que em HTML, eu uso o "æøå" para æøå.

entretanto, assim que os caracteres passam pelo JavaScript, recebo caixas pretas com "?" neles ao usar æøå, e "æøå" é impresso como está.

Certifiquei-me de configurá-lo para utf-8, mas isso não está ajudando muito.

Idealmente, quero que funcione com quaisquer caracteres especiais (naturalmente).

O exemplo que não está funcionando está incluído abaixo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
        <script type="text/javascript" charset="utf-8">
            alert("&aelig;&oslash;&aring;");
            alert("æøå");

        </script>
    </head>
    <body>
    </body>
</html>

O que estou fazendo de errado?


Ok, graças à resposta do Grapefrukts, consegui funcionar.

Na verdade, eu precisava disso para dados provenientes de um servidor MySQL.Como salvar os arquivos na codificação UTF-8 só resolve o problema do conteúdo estático, pensei em incluir a solução para strings de um servidor MySQL, extraídas usando PHP:

utf8_encode($MyStringHere)

Foi útil?

Solução

Apenas especificar UTF-8 no cabeçalho não é suficiente.Aposto que você não salvou seu arquivo como UTF-8.Qualquer editor de texto razoavelmente avançado terá esta opção.Tente isso e tenho certeza que funcionará!

Outras dicas

Se você não conseguir definir a codificação da resposta, poderá usar \u sequência de escape na string literal JavaScript para exibir esses caracteres.

alert("\u00e6\u00f8\u00e5")

Você também pode usar String.fromCharCode() para gerar um caractere de uma entidade numérica.

por exemplo. String.fromCharCode( 8226 ) criará um personagem de marcador.

Recebo "æøå" no primeiro e alguns caracteres inúteis no próximo.Será que o javascript não está confundindo (ou mojibake) suas cartas, mas a caixa de diálogo de alerta usa a fonte padrão do sistema e a fonte é incapaz de exibir as letras?

Eu uso o código assim com o idioma tailandês.Está bem.

$message é minha variável PHP.

echo("<html><head><meta charset='utf-8'></head><body><script type='text/javascript'>alert('" . $message . "');</script></body></html>");

Espero que isso possa ajudar.Obrigado.

(Não posso postar imagem do que fiz porque o sistema disse "Não tenho reputação suficiente", então deixo a imagem aqui. http://goo.gl/9P3DtI Desculpe pelo inconveniente.)

Desculpe pelo meu inglês fraco.

Isso funciona como esperado para mim:

alert("&aelig;&oslash;&aring;");

...cria um alerta contendo a string "æøå" enquanto

alert("æøå");

...cria um alerta com os caracteres não-ascii.

Javascript é bastante limpo em utf-8 e não tende a colocar obstáculos em seu caminho.

Talvez você esteja colocando isso em um servidor web que serve como ISO-8859-1?Se você usa o Apache, em seu arquivo de configuração do Apache (ou em .httaccess, se puder substituir), você deverá ter uma linha

AddCharset utf-8 .js

(Observação:editado para escapar do e comercial ...caso contrário, não faria sentido.)

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