php utf-8编码字符串头尾输出空格,php-对UTF-8编码的字符串使用str_split

我目前正在研究一个项目,而不是使用常规的MySQL查询,我想继续学习如何使用PDO。

我有一个称为参赛者的表,数据库,表和所有列均位于utf-8中。 我的参赛者表中有10个条目,它们的“名称”列包含åäö等字符。

现在,当我从数据库中获取一个条目并使用var_dump的名称时,我得到了一个很好的结果,即一个包含所有特殊字符的字符串。 但是我需要做的是按字符分割字符串,将它们放入数组中,然后重新排列。

例如,我有这个字符串:测试ÅÄÖTåän

当我运行str_split时,我得到了数组中自己的每个键。 唯一的问题是所有特殊字符都将显示为:�,这意味着数组将如下所示:

Array

(

[0] => T

[1] => e

[2] => s

[3] => t

[4] =>

[5] => �

[6] => �

[7] => �

[8] => �

[9] => �

[10] => �

[11] =>

[12] => T

[13] => �

[14] => �

[15] => �

[16] => �

[17] => n

)

如您所见,它不仅弄乱了字符,而且还在str_split进程中复制了它们。 我尝试了几种分割字符串的方法,但是它们都有相同的问题。 当我在分割之前输出字符串时,它会很好地显示特殊字符。

这是我的dbConn.php代码:

//需要配置文件: require_once('config.inc.php');

// Start PDO connection:

$dbHandle = new PDO("mysql:host=$dbHost;dbname=$dbName;charset=utf-8", $dbUser, $dbPass);

$dbHandle -> exec("SET CHARACTER SET utf8");

// Set error reporting:

$dbHandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

这是我用来从数据库中获取并循环的代码:

// Require files:

require_once('dbConn.php');

// Get random artist:

$artist = $dbHandle->query("SELECT * FROM ".ARTIST_TABLE." WHERE id = 11 ORDER BY RAND() LIMIT 1");

$artist->setFetchMode(PDO::FETCH_OBJ);

$artist = $artist->fetch();

var_dump($artist->name);

// Split name:

$artistChars = str_split($artist->name);

我正在使用utf-8进行连接,我的php文件是utf-8,没有BOM,并且此页面上的其他特殊字符也没有共享此问题。 可能出什么问题了,或者我做错了什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值