utf-8格式下 imagettftext 中文乱码

洞悉 发布于 2013/07/02 10:56
阅读 2K+
收藏 0
PHP

今天做个长微博工具
发现用 imagettftext  把文字写到图片上 中文乱码。
在网上找了好多信息,排除非gbk编码问题 我的所有文件都是utf-8的 当然也试了GBK的也乱码;


有人说 

$str=mb_convert_encoding('汉字', "html-entities", "utf-8");

用这个转换成html的编码就可以了 我试了还是不行啊;


又在网上看见一个转码函数

function code($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){
            $buf .= "&#xfffd";
        } else if (ord ($string[$i]) <224){
            $buf .= sprintf("&#%d;",
                ((ord($string[$i + 0]) & 31) << 6) +
                (ord($string[$i + 1]) & 63)
            );
            $i += 1;
        } else if (ord ($string[$i]) <240){
            $buf .= sprintf("&#%d;",
                ((ord($string[$i + 0]) & 15) << 12) +
                ((ord($string[$i + 1]) & 63) << 6) +
                (ord($string[$i + 2]) & 63)
            );
            $i += 2;
        } else {
            $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;
  }
试了也不行。


网上说是编译的时候gd库的选项 --enable-gd-jis-conv 我编译的时候没有添加这个 难道编译的时候要写 --without-gd-jis-conv 

大神帮帮忙!!!(最好不重新编译安装php)


加载中
0
小虫0302
小虫0302
字体,字体,字体。
洞悉
洞悉
arial 字体里面明明有中文 但是乱码了,我换成宋体居然好了
洞悉
洞悉
我用的字体是 arial
0
小虫0302
小虫0302
<?php
// Set the content-type
header("Content-type: image/png");

// Create the image
$im = imagecreatetruecolor(400, 30);

// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// The text to draw
$text = 'Testing...';
// Replace path by your own font path
$font = 'arial.ttf'; //绝对路径

// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>
洞悉
洞悉
一直都是用的绝对路径
洞悉
洞悉
不是路径的问题
返回顶部
顶部