在核心数据库中保存特殊字符 php
save special characters in database in core php
我想在数据库中保存特殊字符,如以下字符串:-
:¦:-•:":•.-:¦:-•EXCELLENT!•-:¦:-•:•-:¦:-•:*''•
下面是我正在使用的代码。
$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_encode
函数将数据编码为 "utf-8"。
请通过做这两个简单的事情来检查,希望对您有所帮助:-
您要在其中保存此数据(特殊字符)的列的 "collation"
,使其成为 "utf-8-bin"
.
将列的类型更改为 "blob"
、"text"
或 "long text"
.
尝试你的代码:- mysqli_set_charset($linkMysqli, "utf8");
encode and decode process
。在保存文本之前对其进行编码,如果您想在某处显示它,请先对其进行解码,然后再显示。
简单的事情就是改变
数据库中的 到 utf8 -> utf8_unicode_ci
如果您不使用字段 Type 作为文本而不是将其更改为文本...
可能这是简单的解决方案.....
其他可能你可以检查你的Mysqli Db class在哪里
'charset' => 'utf8',
有没有....??
如果找不到字符集,请更改为 utf8...
最后检查你的页眉
并添加
<meta charset="utf-8">
那就是你可能会得到一些东西...
我想在数据库中保存特殊字符,如以下字符串:-
:¦:-•:":•.-:¦:-•EXCELLENT!•-:¦:-•:•-:¦:-•:*''•
下面是我正在使用的代码。
$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_encode
函数将数据编码为 "utf-8"。
请通过做这两个简单的事情来检查,希望对您有所帮助:-
您要在其中保存此数据(特殊字符)的列的
"collation"
,使其成为"utf-8-bin"
.将列的类型更改为
"blob"
、"text"
或"long text"
.尝试你的代码:-
mysqli_set_charset($linkMysqli, "utf8");
encode and decode process
。在保存文本之前对其进行编码,如果您想在某处显示它,请先对其进行解码,然后再显示。
简单的事情就是改变
数据库中的 到 utf8 -> utf8_unicode_ci
如果您不使用字段 Type 作为文本而不是将其更改为文本...
可能这是简单的解决方案.....
其他可能你可以检查你的Mysqli Db class在哪里
'charset' => 'utf8',
有没有....??
如果找不到字符集,请更改为 utf8...
最后检查你的页眉
并添加
<meta charset="utf-8">
那就是你可能会得到一些东西...