gpt4 book ai didi

php - mysql_real_escape_string 无法转义特殊字符,因为文本来自文本编辑器

转载 作者:行者123 更新时间:2023-11-30 23:34:25 24 4
gpt4 key购买 nike

我正在创建用户输入 commnets 并将评论插入 DB(mysql) 的页面。这些注释可以包含单引号、双引号或任何特殊字符。为了逃避这些,我使用了以下代码

 $str = mysql_real_escape_string($str,$conn);

这里$conn是事件连接资源,$str是textarea中的字符串内容

这工作正常并返回我可以插入到数据库中的完美转义字符串。但是,如果用户在 openoffice writer 或 msword 等文本编辑器中输入他/她的评论并使用其中的文本,则会发生错误并在插入数据库时​​给出如下错误

Incorrect string value: '\x93testi...' for column 'commnets' at row 1

我认为这是因为来自文本编辑器(openoffice、msword)的文本中的单双引号没有正确转义。那么如何将其转义以将其插入数据库。请帮助我

提前致谢......

最佳答案

您没有提交要保存在数据库中的有效 UTF8 字符串。相反,它可能是特定于 Windows 的字符集。

假设您的用户正在通过网页提交文本 - 您需要确保以 UTF8 格式提供页面,并且在提交表单时它也是 UTf8(如果提供页面则默认为在 UTF8 中)。

你需要:

确保您在 header 中发送 UTF-8 字符集。

header("Content-Type:text/html; charset=UTF-8");

和/或在您的页面部分设置内容类型

顺便说一句,mysql_real_escape_string 与这里的问题没有任何关系。该函数用于防止包含普通引号的字符串被用于进行 SQL 注入(inject)攻击,无论如何使用准备好的语句可以更好地解决这个问题。

关于php - mysql_real_escape_string 无法转义特殊字符,因为文本来自文本编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8802170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com