在核心php中保存数据库中的特殊字符
我想在数据库中保存特殊字符,如以下字符串:- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 下面是我正在使用的代码在核心php中保存数据库中的特殊字符,php,sql,special-characters,Php,Sql,Special Characters,我想在数据库中保存特殊字符,如以下字符串:- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 下面是我正在使用的代码 $Fields ['CommentText']=$CommentText; $Fields = prepareMySQLi($FieldsNotifications,$linkMysqli); $insert = mysqli_query($l
$Fields ['CommentText']=$CommentText;
$Fields = prepareMySQLi($FieldsNotifications,$linkMysqli);
$insert = mysqli_query($linkMysqli,"INSERT INTO `feeds` SET $Fields");
function prepareMySQLi($MyArray,$linkMysqli) {
foreach($MyArray as $col => $val) {
if($val=='Invalid Request') $val='';
if ($val!='' && !is_array($val)) {
$col = mysqli_real_escape_string($linkMysqli,$col);
$val = mysqli_real_escape_string($linkMysqli,$val);
if(isset($fields)) {
$fields .= ", `$col` = '$val' ";
} else {
$fields = " `$col` = '$val' ";
}
}
}
return $fields;
}
但上述代码保存的结果如下:-
非常好,非常好
有人能告诉我如何保存与数据库中相同的字符串吗?这似乎是编码问题。您接收的数据的编码应与存储它的数据库的编码相同 一般做法是对两者都使用“utf-8”编码 因此,请检查数据库存储数据的编码,并尝试将接收到的数据转换为该格式,反之亦然
您可以使用
utf8\u encode
功能将数据编码为“utf-8”。请通过做这两件简单的事情进行检查,我希望它能帮助您:-
“collation”
使其成为“utf-8-bin”
“blob”
,“text”
或“long text”
mysqli\u set\u字符集($linkMysqli,“utf8”);
编码和解码过程
。在保存文本之前,对其进行编码,如果要在某处显示,则首先对其进行解码,然后显示简单的事情就是改变 数据库中的排序到utf8->utf8\u unicode\u ci 如果您不使用字段作为文本,请键入,然后将其更改为文本 也许这是一个简单的解决方案 其他事情可能你可以检查你的Mysqli数据库类在哪里
'charset' => 'utf8',
有没有
如果找不到字符集,请更改为utf8
最后检查你的页眉
加
<meta charset="utf-8">
也就是说,在保存到数据库后,您可能会得到一些东西。它是如何从数据库返回字符串的?据猜测,您的数据库没有配置为处理UTF-8。非常好。我不想配置我的数据。我需要按原样保存字符串。您能帮我吗?我不想配置我的数据如果你不想让数据库处理UTF-8,你希望如何处理UTF-8?我已经尝试了你提到的第一种方法,但它不起作用..我不能使用编码-解码方法..我只能在保存文本或数据库时进行更改,正如你提到的.我已经提到了我的sqli_set_charset($linkMysqli,“utf8”);以及我刚才提到的它现在的工作原理:-mysqli_set_charset($linkMysqli,“utf8”);不要使用utf8_*排序设置。使用utf8mb_*处理Unicode基本多语言平面之外的字符。在utf8_*排序中不起作用的字符示例: