Não é possível obter o sinal “+” para exibir
-
21-08-2019 - |
Pergunta
Eu tenho esse valor em um banco de dados mysql: "A +" é o nome de uma revista. Eu posso vê-lo sentado no banco de dados, no entanto i não conseguem tê-lo exibir via php. Quando eu buscar os dados SQL, ele saídas
"A"
utfencode Tentei () utfdecode () htmlentities () ... sem sucesso. Eu não conseguem diagnosticar o problema. No caso, importa, eu buscar esses dados via ajax (carga jQuery () função)
UPDATE:
Acontece que o sinal + é removido ao analisar os dados através de uma expressão regular. parece que não consegue encontrar uma solução para o que quer. preg_quote () é de nenhum uso.
Solução
É possível que jQuery está interpretando-a como a url codificado sinal '+', que pode ser interpretado como um espaço. Postar algum código e tenho certeza que alguém pode dar-lhe uma resposta completa.
Outras dicas
O personagem +
é interpretado como espaço quando os dados é declarado como application/x-www-form-urlencoded
:
Este é o tipo de conteúdo padrão. Formulários enviados com este tipo de conteúdo deve ser codificado como segue:
- nomes e valores de controle são escapou. Caracteres de espaço são substituídos por '
+
' , e os personagens, então reservados são escapados como descrito em [RFC1738], secção 2.2: Non-alfanumérico caracteres são substituídos por '%HH
', um sinal de porcentagem e dois dígitos hexadecimais representando o código ASCII do caractere. Quebras de linha são representadas como pares "CR LF" (ou seja, '%0D%0A
').- Os nomes de controlo / valores são listados na ordem em que aparecem no documento. O nome é separado do valor por '
=
' e pares nome / valor são separados uns dos outros por '&
'.
Então você tem que codificá-lo corretamente. Em JavaScript, use a função encodeURIComponent
se você quiser usar caráter +
em uma URI:
"http://www.example.com/?q=" + encodeURIComponent("A+")
Você passá-lo como um parâmetro de javascript sem urlencode () 'ing-lo?
Bem, já que a única maneira de fazer o trabalho é fazer
echo urlencode("this is the A+ text");
Ele funciona e não parece danificar o resto do texto, mas eu não entendo a lógica por trás disso. De qualquer forma, obrigado a todos aqueles que tentaram ajuda.
Você pode adicionar um caractere de escape antes do \ e ver como isso funciona. Se não converte os dados de campo usando htmlentities