无法显示“+”符号

时间:2009-03-20 14:23:44

标签: php special-characters

我在mysql数据库中有这个值:“A +”这是一本杂志的名字。 我可以看到它坐在数据库中,但我无法通过php显示它。 当我获取sql数据时,它输出

“A”

我试过utfencode()utfdecode()htmlentities()......无济于事。我无法诊断问题。 如果重要,我通过ajax(jquery load()函数)获取这些数据

更新:

事实证明,在通过正则表达式解析数据时删除了+符号。似乎无法找到解决方案。 preg_quote()是没用的。

5 个答案:

答案 0 :(得分:5)

jquery可能将其解释为url编码的“+”符号,可以将其解释为空格。发布一些代码,我相信有人可以给你一个完整的答案。

答案 1 :(得分:1)

当数据声明为application/x-www-form-urlencoded时,+字符被解释为空格:

  

这是默认内容类型。使用此内容类型提交的表单必须按如下方式编码:

     
      
  1. 转义控件名称和值。 空格字符替换为“+,然后按照[RFC1738]第2.2节中的说明转义保留字符:非字母数字字符替换为“%HH” ,一个百分号和两个十六进制数字,表示该字符的ASCII码。换行符表示为“CR LF”对(即“%0D%0A”)。
  2.   
  3. 控件名称/值按它们在文档中出现的顺序列出。该名称与值“=”分隔,名称/值对彼此分隔为“&”。
  4.   

所以你必须正确编码。在JavaScript中,如果要在URI中使用encodeURIComponent字符,请使用+函数:

"http://www.example.com/?q=" + encodeURIComponent("A+")

答案 2 :(得分:0)

您是否将其作为javascript参数传递而没有urlencode()它?

答案 3 :(得分:0)

好吧,因为唯一可行的方法就是



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


它有效并且似乎不会损坏文本的其余部分,但我不明白这背后的基本原理。无论如何,感谢所有那些试图提供帮助的人。

答案 4 :(得分:-1)

您可以在\之前添加转义字符,并查看其工作原理。如果不使用htmlentities

转换字段数据