endroid/qr-code lebel中文乱码,imagettftext因为enable-gd-jis-conv
排除字体的原因,如果使用了支持中文字体,且环境配置无误。
imagettftext()只支持UTF-8,由于enable-gd-jis-conv开启了,导致中文不是UTF-8编码,导致乱码出现。但是方法提供了可以包含十进制数字化字符表示(形式为:€)来访问字体中超过位置127 的字符。UTF-8 编码的字符串可以直接传递。
提供方法处理,传递前转换编码
function toEntities ($string)
{
$len = strlen ($string);
$buf = "";
for ($i = 0; $i < $len; $i++) {
if (ord ($string[ $i ]) <= 127) {
$buf .= $string[ $i ];
} else if (ord ($string[ $i ]) < 192) {
//unexpected 2nd, 3rd or 4th byte
$buf .= "�";
} else if (ord ($string[ $i ]) < 224) {
//first byte of 2-byte seq
$buf .= sprintf ("&#%d;",
((ord ($string[ $i + 0 ]) & 31) << 6) +
(ord ($string[ $i + 1 ]) & 63)
);
$i += 1;
} else if (ord ($string[ $i ]) < 240) {
//first byte of 3-byte seq
$buf .= sprintf ("&#%d;",
((ord ($string[ $i + 0 ]) & 15) << 12) +
((ord ($string[ $i + 1 ]) & 63) << 6) +
(ord ($string[ $i + 2 ]) & 63)
);
$i += 2;
} else {
//first byte of 4-byte seq
$buf .= sprintf ("&#%d;",
((ord ($string[ $i + 0 ]) & 7) << 18) +
((ord ($string[ $i + 1 ]) & 63) << 12) +
((ord ($string[ $i + 2 ]) & 63) << 6) +
(ord ($string[ $i + 3 ]) & 63)
);
$i += 3;
}
}
return $buf;
}本文作者: Liaodeity
本文链接: https://www.jianbaizhan.com/article/743
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!