我从MySQL db,varchar(255)utf8_general_ci字段获取数据并尝试使用PHP将文本写入PDF。我需要确定PDF中的字符串长度,以限制表格中文本的输出。但我注意到1, 2, 3
/ mb_substr
的输出真的很奇怪。
例如:
substr
输出:
数据库:
我的问题是额外角色来自哪里?
答案 0 :(得分:1)
额外字符是两字节UTF-8序列的第一部分。您可能遇到多字节字符串函数的内部编码问题。您的代码将文本视为固定的1字节编码。 UTF-8中的ń,十六进制C5 84,在CP-1250中被视为Ĺ“, sub [IND] < / strong>在ISO-8859-2中,两个字符。
尝试在脚本顶部执行此操作:
mb_internal_encoding("UTF-8");
答案 1 :(得分:1)
您需要告诉您的mb_
函数数据是UTF-8,以便他们能够正确对待它。使用mb_internal_encoding
为所有函数全局设置此项,或在调用时将$encoding
参数传递给函数:
mb_substr($_tmpStr, 0, $i, 'UTF-8')
答案 2 :(得分:0)
除了将表和字段设置为UTF-8之外,您还需要将mysqli_set_charset('UTF-8')设置为UTF-8(如果您使用的是mysqli)。
你也试过吗?
$_tmpStr = utf8_encode( $vfrow['title'] );