使用PHP将特殊的utf8符号输入SQL/mySql数据库

使用PHP将特殊的utf8符号输入SQL/mySql数据库,php,mysql,sql-server,utf-8,Php,Mysql,Sql Server,Utf 8,我正在尝试将文本数据解析到mySql中的一个表中,然后在SQL server上解析。此文本包含特殊字符,例如:。当文本位仍在PHP上时,一切正常,但只要我使用utf8_编码(teststring);它会丢失角色并将其更改为– 我发现的唯一解决方法是在从数据库中取回字符串时再次对其进行解码,但在处理大量数据时这是非常低效的。附近有工作吗 已经在互联网上尝试了utf8mb4编码和许多其他答案 例如: $test = "some string containing ⓜ"; print_r($test.

我正在尝试将文本数据解析到mySql中的一个表中,然后在SQL server上解析。此文本包含特殊字符,例如:。当文本位仍在PHP上时,一切正常,但只要我使用utf8_编码(teststring);它会丢失角色并将其更改为–

我发现的唯一解决方法是在从数据库中取回字符串时再次对其进行解码,但在处理大量数据时这是非常低效的。附近有工作吗

已经在互联网上尝试了utf8mb4编码和许多其他答案

例如:

$test = "some string containing ⓜ";
print_r($test."</br>");
$test = utf8_encode($test);
print_r($test."</br>");
$test = utf8_decode($test);
print_r($test."</br>");

如果我不使用utf8_encode(),我会从数据库中得到解析错误:

公司里有人犯了一个错误,一个丢失的文件没有像应该的那样进行编码,所以基本上文本不是utf8。。。。很抱歉占用了大家的时间。

您要存储到的表是什么字符集?对于特殊字符,它总是帮助我以相同的编码保存所有内容。你读过吗?将所有内容都放在UTF8中,因为(互联网)告诉我,当我想以纯文本存储这些字符时,这是最好的选择。但问题是,在将字符存储到数据库之前,它已经删除了该字符:/@simon已经完成了它,无法想象我错过了所需的一个步骤。正如上面的代码片段所指出的,当在PHPWhat中编码为UTF8时,问题已经出现了。MySQL列的字符集是什么?您的SQL Server列是否为
NVARCHAR
列?当你插入SQL Server时,你是在做
N'text'
而不仅仅是
'text'
?对于谷歌搜索的人来说:如果你的整个工具链使用UTF-8,你根本不需要任何操作,特别是像
utf8\u encode()
这样的东西,每个人都不正确地使用。
some string containing ⓜ
some string containing â
some string containing ⓜ