2009-03-20 3 views
2

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

"А"

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

UPDATE:

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

+0

Вы можете разместить код? –

+0

Если вы отслеживаете данные ответа в Firebug, происходит ли «+»? Это сузило бы масштаб проблемы. – tj111

+0

нет, в firebug, + не отображается ни через. Я не уверен, какой код для публикации.В принципе, просто делать в php echo "A +"; в php echoes «A» – pixeline

ответ

5

Возможно, что jquery интерпретирует его как кодируемый url знак «+», который можно интерпретировать как пространство. Отправьте код, и я уверен, что кто-то может дать вам полный ответ.

+0

, следуя вашим предложениям, я попытался просто вывести непосредственно «A +», скопировав его в строку вывода php. проблема остается. htmlentities не помогли. только «urlencode()» отображает +! теперь это проблема: я не хочу писать urlencode текст, который должен быть удобочитаемым человеком. lost i am ... – pixeline

+0

какая строка вывода PHP? Тот, который создает строку в вызове ajax? или непосредственно на пустой странице PHP-скрипта? – jonstjohn

+0

простая строка, например: echo "имя издателя: A +
, опубликованное в 1999 году"; – pixeline

-1

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

+0

, следуя вашим предложениям, я попробовал просто вывести непосредственно «A +» путем жесткого кодирования в строке вывода php. проблема остается. htmlentities не помогли. только «urlencode()» отображает +! теперь это проблема: я не хочу писать urlencode текст, который должен быть удобочитаемым человеком. потерянный я ... – pixeline

1

+ символ интерпретируется как пространство, когда данные объявлены 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

ли вы передать его в качестве параметра яваскрипта без urlencode() «ИНГ это?

+0

нет, я не передаю его. Он сидит в выбранной строке html. – pixeline

0

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

 


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


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

Смежные вопросы