Не удается получить знак «+» для отображения - PullRequest
2 голосов
/ 20 марта 2009

У меня есть это значение в базе данных mysql: «A +» - это название журнала. Я могу видеть, что это сидит в базе данных, однако мне не удается отобразить его через php. Когда я получаю данные SQL, он выводит

"А"

Я пытался utfencode () utfdecode () htmlentities () ... безрезультатно. Я не могу диагностировать проблему. В случае, если это имеет значение, я получаю эти данные с помощью ajax (функция jquery load ())

UPDATE:

Оказывается, знак + удаляется при анализе данных через регулярное выражение. не могу найти решение для этого либо. preg_quote () бесполезен.

Ответы [ 5 ]

5 голосов
/ 20 марта 2009

Возможно, что jquery интерпретирует его как закодированный в URL знак '+', который можно интерпретировать как пробел. Напишите некоторый код, и я уверен, что кто-то может дать вам полный ответ.

1 голос
/ 20 марта 2009

Символ + интерпретируется как пробел, когда данные объявлены как application/x-www-form-urlencoded:

Это тип контента по умолчанию. Формы, представленные с этим типом содержимого, должны быть закодированы следующим образом:

  1. Имена и значения элементов управления экранированы. Пробельные символы заменяются на '+' , а затем зарезервированные символы экранируются, как описано в [RFC1738], раздел 2.2: не буквенно-цифровые символы заменяются на '%HH', знак процента и две шестнадцатеричные цифры, представляющие ASCII-код символа. Разрывы строк представляются в виде пар "CR LF" (т. Е. '%0D%0A').
  2. Имена / значения элементов управления перечислены в порядке их появления в документе. Имя отделяется от значения с помощью '=', а пары имя / значение отделяются друг от друга с помощью '&'.

Так что вы должны правильно его кодировать. В JavaScript используйте функцию encodeURIComponent, если вы хотите использовать символ + в URI:

"http://www.example.com/?q=" + encodeURIComponent("A+")
0 голосов
/ 20 марта 2009

Ну, так как единственный способ заставить это работать - это сделать



echo urlencode("this is the A+ text");


Это работает и, кажется, не повреждает остальную часть текста, но я не понимаю причины этого. В любом случае, спасибо всем, кто пытался помочь.

0 голосов
/ 20 марта 2009

Вы передаете его как параметр javascript без urlencode () его использования?

0 голосов
/ 20 марта 2009

Вы можете добавить escape-символ перед \ и посмотреть, как это работает. Если не конвертировать данные поля, используя htmlentities

...