我从 MySQL 数据库 varchar(255) utf8_general_ci 字段获取数据,并尝试使用 PHP 将文本写入 PDF。我需要确定 PDF 中的字符串长度以限制表格中文本的输出。但是我注意到 mb_substr
/substr
的输出真的很奇怪。
例如:
mb_internal_encoding("UTF-8");
$_tmpStr = $vfrow['title'];
$_tmpStrLen = mb_strlen($vfrow['title']);
for($i=$_tmpStrLen; $i >= 0; $i--){
file_put_contents('cutoffattributes.txt',$vfrow['field']." ".$_tmpStr."\n",FILE_APPEND);
file_put_contents('cutoffattributes.txt',$vfrow['field']." ".mb_substr($_tmpStr, 0, $i)."\n",FILE_APPEND);
}
输出这个:
数据库:
我的问题是多余的字符是从哪里来的?
最佳答案
- 您需要通过适本地设置连接编码来确保您实际上是以 UTF-8 编码从数据库中获取数据。这取决于您的数据库适配器,请参阅 UTF-8 all the way through了解详情。
您需要告诉您的
mb_
函数数据是 UTF-8 格式,以便它们可以正确处理它。使用mb_internal_encoding
为所有函数全局设置此项,或者在调用函数时将$encoding
参数传递给函数:mb_substr($_tmpStr, 0, $i, 'UTF-8')
关于php - 使用 UTF-8 和 mb_substr 的损坏数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29803193/