【发布时间】:2015-05-06 08:49:33
【问题描述】:
我有一个奇怪的问题...
我有以下字符串:
$sString = "This is my encoded string é à";
首先,我删除 html 实体:
$sString = html_entity_decode($sString, ENT_COMPAT, 'UTF-8');
我想要的是正确拆分此字符串,以在同一表行的不同列中显示每个字符。
嗯,从逻辑上讲,我使用了:
$aString = str_split($sString) // Fill an array with each char
它不起作用。它在框中显示字符,因为我没有使用 html_entity_decode...
所以,我决定尝试以下方法:
for($i = 0; $i < 16; $i++) {
echo "<td>";
echo $sLine1[$i];
echo "</td>";
}
它可以但使用特殊字符,如 ?在黑盒子里(编码问题)。
真正奇怪的地方在于,当我不把它放在<td>元素中时,它显示得很好,而且没有编码问题!
我的 HTML 页面包含 UTF-8 的字符集并且格式正确(包括 doctype、html、body 等...)
我不得不承认,在这一点上,我不知道这个问题是从哪里来的......
更新
我刚刚意识到,当我在<td> 之外逐个字符显示时,它也不起作用。编码的字符需要成对工作!
这对我来说是个问题,因为字符串来自数据库,特殊字符并不总是在同一个地方!
示例:
这将显示编码问题char:
$sString = "Paëlla";
echo $sString[3];
但是这样一来,就会显示ë:
$sString = "Paëlla";
echo $sString[3];
echo $sString[4];
【问题讨论】: