我在mysql数据库中有这个值:“A +”这是一本杂志的名字。 我可以看到它坐在数据库中,但我无法通过php显示它。 当我获取sql数据时,它输出
“A”
我试过utfencode()utfdecode()htmlentities()......无济于事。我无法诊断问题。 如果重要,我通过ajax(jquery load()函数)获取这些数据
更新:
事实证明,在通过正则表达式解析数据时删除了+符号。似乎无法找到解决方案。 preg_quote()是没用的。
答案 0 :(得分:5)
jquery可能将其解释为url编码的“+”符号,可以将其解释为空格。发布一些代码,我相信有人可以给你一个完整的答案。
答案 1 :(得分:1)
当数据声明为application/x-www-form-urlencoded
时,+
字符被解释为空格:
这是默认内容类型。使用此内容类型提交的表单必须按如下方式编码:
- 转义控件名称和值。 空格字符替换为“
+
”,然后按照[RFC1738]第2.2节中的说明转义保留字符:非字母数字字符替换为“%HH
” ,一个百分号和两个十六进制数字,表示该字符的ASCII码。换行符表示为“CR LF”对(即“%0D%0A
”)。- 控件名称/值按它们在文档中出现的顺序列出。该名称与值“
醇>=
”分隔,名称/值对彼此分隔为“&
”。
所以你必须正确编码。在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
转换字段数据