我试图在php文件中显示一些印度语字符(印地语,泰米尔语等),从MYSQL数据库中获取数据。
它适用于mysqli_query
,但对于PDO,字符显示为垃圾值。我无法弄清楚为什么,因为我已经设置了所有可能的方面来使用utf-8
。
这是我的连接字符串:(我使用 PHP版本5.6.8 )
$db_connection = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8;', 'username', 'password', array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
在做了一些研究后,我发现了utf8_decode
函数,并决定尝试一下。但是,它只能部分工作。
这些是结果(如标记所示)
PDO result without utf8 decoding:
आज सदीओ के बाद खà¥à¤¦à¤•à¥‹ हम संà¤à¤¾à¤²à¥‡ हà¥à¤...
PDO result with utf8 decoding:
��?��? सद��?��? ��?��? बाद ��?ुद��?��? हम स��?भाल��? हुए...
MYSQLI_QUERY:
आज सदीओ के बाद खुदको हम संभाले हुए...
由于只有PDO出现此问题,我假设我的数据库和标题都很好。如果需要更多代码,请告诉我(查询是标准数据库调用)。
编辑:关于utf-8
设置,我已经完成了以下步骤:
charset=utf8;
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
exec
功能 $db_connection->exec("SET NAMES utf8");
$db_connection->exec("SET CHARACTER SET utf8");