如果您正在使用非 ASCII 字符串并且想要操作这些字符串,那么使用 substr() 是错误的。相反,您应该使用多字节字符串函数,例如mb_substr( )等。
为此,您必须为 PHP 启用 mbstring-extension。见http://php.net/manual/en/mbstring.installation.php
我也不会直接回显使用 javascript 的字符串 - 你永远不知道那里可能有什么字符,然后你应该开始转义一些字符以与 javascript 一起正常工作。
相反,我会鼓励你使用json_encode。这将正确转义所有特殊字符和 UTF8 字符。必须为 json_* 函数启用 PECL 的 json-extension。见http://php.net/manual/en/json.installation.php
当然,如果您使用Zend -framework,那么正确的方法是使用Zend_Json::encode()
<?php
$maxLength = 50;
$encoding = 'UTF-8';
$tail = ' ...';
$row['desc'] = (mb_strlen($row['desc'], $encoding) > $maxLength) ? mb_substr($row['desc'], 0, $maxLength, $encoding) . $tail : $row['desc'];
?>
<script type="text/javascript">
var rowData = <?php echo json_encode($row); ?>;
alert(rowData.desc);
</script>