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 许可协议。转载请注明出处!