我正在尝试使用 ajax 将包含 HTML 和 utf8 字符(例如:中文、日文阿拉伯字符)的用户输入发送到php脚本,以便将其存储在数据库中。
我通常先转义() html 内容,然后再将其放入 url。但是转义导致 uft8 字符变为十六进制代码。
例如(原始):
<div id="box">テスト</div>
逃跑后:
%3Cdiv%20id%3D%22box%22%3E%u30C6%u30B9%u30C8%3C/div%3E
发送到 php 解析的 php 脚本并将其保存到数据库中(mysql,列类型:文本)。
php 将保存的数据回显出来:
<div id="box">%u30C6%u30B9%u30C8</div>
我还在我的 php 脚本中使用了这个脚本来防止 php\
在 html 之前添加一个"
if(get_magic_quotes_gpc())
{
function undo_magic_quotes_array($array)
{
return is_array($array) ? array_map('undo_magic_quotes_array', $array) : str_replace("\\'", "'",
str_replace("\\\"", "\"",
str_replace("\\\\", "\\",
str_replace("\\\x00", "\x00", $array))));
}
$_GET = undo_magic_quotes_array($_GET);
$_POST = undo_magic_quotes_array($_POST);
$_COOKIE = undo_magic_quotes_array($_COOKIE);
$_FILES = undo_magic_quotes_array($_FILES);
$_REQUEST = undo_magic_quotes_array($_REQUEST);
}
我不确定这个脚本是导致它还是 javascript 的 escape() 导致它?有任何想法吗?