IE libra munging (£) símbolo

votos
1

Eu tenho um formulário html que vai de fazer todos os tipos de estranhos Back End coisas. Isso funciona bem no firefox. e na maioria dos casos ele funciona bem no IE

No entanto, o (libra esterlina) sinal £ causa problemas, e parece ter munged na enviar.

As formas é algo como isto

 <form action=*MyFormAction*  accept-charset=UTF-8 method=post>

Eu acho que eu tenho visto este problema antes, mas não me lembro a solução.

edição, o símbolo do euro € funciona bem

editar 2, Na verdade se eu colocar o símbolo € com um símbolo £ também funciona bem. Olhando para o problema se eu usar caracteres que não são da parte ampliada de iso8859-1 ele funciona ok. Se eu usar charicters prolongados de iso8859-1 eles se munged. Então, como posso fazer IE usar o conjunto de caracteres que o aceitar-charset diz que deveria?

Publicado 24/02/2009 em 12:51
fonte usuário
Em outras línguas...                            


4 respostas

votos
0

Como é a £ submetido? Se está em uma caixa de entrada para um preço não submetê-lo, só permitem que os números a serem apresentados e adicione a £ quando você exibir o preço novamente. Ou adicionar o símbolo de moeda no script backend.

Respondeu 24/02/2009 em 12:55
fonte usuário

votos
0

Não sou certeza se isso vai ajudar (leia o artigo inteiro em http://fyneworks.blogspot.com/2008/06/british-pound-sign-encoding-revisited.html )

Excerto:

O PROBLEMA Se você olhar para o UTF-8 / Latin-1 (AKA ISO-8859-1) Tabela de Caracteres você vai achar que o código decimal para o sinal de libra esterlina britânica é 163 - eo código hexadecimal é A3.

£ =% A3

No entanto, este não é o caso no (ALL) funções de codificação / decodificação em JavaScript ...

encodeURI/encodeURIComponent
Encodes a Uniform Resource Identifier (URI) component by

substituindo cada instância de certos caracteres por um, dois, ou três sequências de escape que representa a codificação UTF-8 do carácter

O que significa que, a fim de codificar o nosso sinal de libra amado, Javascript usa 2 caracteres. Este é o lugar onde o "a" irritante vem em ...

£ =% C2% A3

Espero que ajude.

Respondeu 24/02/2009 em 12:58
fonte usuário

votos
6

aceitar-charset = "UTF-8"

não faz o que você acha que ele faz (ou o padrão diz que faz) no IE. Em vez disso, o IE usa o valor ( 'UTF-8') como uma lista alternativa de codificações para se um campo não pode ser codificado usando a codificação padrão usual (que é o mesmo como a própria codificação da página).

Então, se você adicionar esse atributo e sua página não está já em UTF-8, você pode estar ficando personagens apresentados como quer o codificação de página ou UTF-8, e não há nenhuma maneira para o seu script formulário-lendo-a submissão de saber!

Por esta razão, você nunca deve usar aceitar-charset; em vez disso você deve sempre garantir que a página que contém o formulário é corretamente servido como “Content-Type: text / html; charset = utf-8” (por cabeçalho HTTP e / ou <meta>).

Na verdade se eu colocar o símbolo € com um símbolo £ também funciona bem.

Sim, isso é porque '€' não pode ser codificado no padrão de codificação da página (presumivelmente ISO-8859-1). Então IE recorre a enviar o campo codificado como UTF-8, que é o que você queria o tempo todo.

Respondeu 24/02/2009 em 15:12
fonte usuário

votos
1

Acho bobince tem a resposta ideal que é “servir a página em UTF-8" , no entanto, como eu não posso fazer isso estou postando meu trabalho em torno de prosperidade.

Adicionando um unmunge campo oculto com um não ISO-8859-1 (o que as nossas páginas são servidos em) estendeu caráter obriga a apresentação em UTF8

assim

<input type="hidden" name="unmunge" value="&#x20ac;"  />

corrige a codificação (a entidade é o símbolo do euro).

Respondeu 24/02/2009 em 15:25
fonte usuário

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