PHP在数据库中插入一些奇怪的字符。喜欢 - 而不是这个 -

时间:2014-04-10 18:29:30

标签: php sql sql-server pdo

UPDATE Tasks SET taskname='Character – – ' WHERE taskguid='D782BA07-9B42-46BB-B4C1-3C6E844880F5

如果我使用SQL Server管理工作室运行此查询,那么一切看起来都很正常但是如果我使用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

修改

我还有一些角色。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

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

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

<?php
   header('Content-Type: text/html; charset=utf-8');
?>

连接到MySQL后添加:

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