在使用带rawurlencode
函数的PHP存储到mysql之前对textarea的换行符进行编码时,将换行符编码为%0D%0A
。
例如: 用户输入的textarea文本:
a
b
使用rawurlencode编码并存储到数据库中将值存储为a%0D%0Ab
从数据库检索并使用rawurldecode
解码时不起作用,代码会出错。如何克服这种情况,以及存储,检索和显示textarea值的最佳方法是什么。
答案 0 :(得分:1)
首先可以使用base64_encode
对此textarea字符串进行编码,然后对其执行base64_decode
,如果以上内容对您不起作用。
如果textarea不包含网址,您应该使用base64_encode
然后使用rawurlencode
,然后照常存储。
答案 1 :(得分:1)
您不应该使用rawurlencode来转义数据库的数据。
每种目标格式都有自己的转义方法,一般来说,它确保从一个地方安全地存储/显示/传输,另一端不需要解码。
例如:
您应该注意到解码这些内容通常由浏览器/数据库完成。因此,实际上没有数据存储转义。并且您的代码不需要解码。
问题可能是因为您使用rawurlencode转义序列,但您的数据库需要特定品牌数据库的转义格式。并使用这个假设来解除它,这是错误的,这搞砸了你的字符串。
结论:找出您正在使用的品牌数据库,查找该数据库的特定转义函数,并在所有您的内容“transferral”上使用正确的转义函数。
P.S。:某些定义可能不正确,请对此发表评论。我想让这个想法坚持下去,但可能没有使用所有合适的条款。
答案 2 :(得分:0)
首先,通过urlencode()运行textarea非常罕见 urlencode不是为此而设计的。
其次,如果您仍想这样做,那么问题可能来自数据库。首先,您需要告诉我们您使用的数据库以及用于存储此数据的TYPE:您将其存储为TEXT还是BINARY数据?你在数据库中设置了正确的字符集吗?