2

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

“一种 ”

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

更新:

事实证明,在通过正则表达式解析数据时,+ 号被删除了。似乎也找不到解决办法。preg_quote() 没有用。

4

5 回答 5

5

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

于 2009-03-20T14:28:53.010 回答
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+")
于 2009-03-20T14:56:27.937 回答
0

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

于 2009-03-20T15:21:46.487 回答
0

好吧,因为让它工作的唯一方法就是做


echo urlencode("这是 A+ 文本");


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

于 2009-03-20T16:11:30.610 回答
-1

您可以在 \ 之前添加一个转义字符,看看它是如何工作的。如果不使用htmlentities转换字段数据

于 2009-03-20T14:46:32.937 回答