PHP在数据库中插入一些奇怪的字符。比如“而不是这个”

PHP在数据库中插入一些奇怪的字符。比如“而不是这个”,php,sql,sql-server,pdo,Php,Sql,Sql Server,Pdo,更新任务集taskname='Character––其中taskguid='D782BA07-9B42-46BB-B4C1-3C6E844880F5' 如果我使用SQLServerManagementStudio运行这个查询,那么一切看起来都很正常,但是如果我使用PDO在PHP中执行这个查询,那么它会插入一些有线字符,比如 character – – 我知道有些东西不见了,但我不知道。为什么会这样 我正在使用 PHP (Version 5.3.8) PDO_ODBC (ODBC Con

更新任务集taskname='Character––其中taskguid='D782BA07-9B42-46BB-B4C1-3C6E844880F5'

如果我使用SQLServerManagementStudio运行这个查询,那么一切看起来都很正常,但是如果我使用PDO在PHP中执行这个查询,那么它会插入一些有线字符,比如

character – –
我知道有些东西不见了,但我不知道。为什么会这样

我正在使用

PHP (Version 5.3.8)
PDO_ODBC (ODBC Connection Pooling Enabled, strict matching)
IIS 7 (using FastCGI)
Window server 2008R2
SQL SEVER 2008
编辑

我还有一些角色

'’' = '’'
'‘' = '‘'
'—' = '–'
'•' = '-'

您可能使用了错误的字符集

试试这个: 标题应位于代码的顶部

<?php
   header('Content-Type: text/html; charset=utf-8');
?>
并在连接MySQL后添加:

<?php
    mysql_query("set names 'utf8'");
?>

欧元“是UTF-8损坏的明显证据,即UTF-8中的多字节字符序列被重新解释为另一种编码。最简单的修复方法是确保所有内容都使用UTF-8,包括数据库连接、用户输入、字符串文本等。请注意,UTF-8不是Windows上的默认编码,因此可能需要显式在不同的地方。

我猜这与数据库中的字符编码有关。我不熟悉SQL Server,但我见过与MySQL类似的东西,与表的编码集有关。或者,当您将数据发布到处理脚本时,它会对de值进行编码…或者可能在pdo中operation@Kryten我看到了很多这样的问题uestion但他们不支持MSSQL。@RiteshChandora是的,可能很多人都见过MySQL。我在你的问题中添加了sql server标记,以便有更多sql server经验的人可以看到。有人能解释下否决的原因吗?是的,这是UTF-8损坏的明显证据。你知道如何修复吗?是的,他说甚至告诉您如何:确保所有内容都在使用UTF-8,包括数据库连接、用户输入、字符串文本等。这意味着您必须在建立PDO连接时设置字符集,可能在运行数据的脚本中,也可能在用户输入脚本中,您必须在每次使用y时设置名称我们的MSSQL资料。请查看表排序规则并将其设置为UTF-8。然后修复您的值。@zerophreak请不要建议mysql再次使用,尤其是当人们指定他们正在使用PDO和Super时,尤其是因为它已被弃用。