imagettftext(): any2eucjp(): invalid code in input string 错误如何解决方法

柴门鸟雀噪,归客千里至。光明顶下来,一路听着阵阵松涛,我们走过西海,飞来石,天海,爬过百步云梯,伴着凤凰松迎客松的多姿到了玉屏峰。玉屏峰犹如一道屏障,山面光滑如镜子,如屏风,还不时有几个斗大的字,说是哪位名人留下的。玉屏峰最险的地方是在一线天,上下达七八十度的落差,台阶狭,仅容一人,台阶窄,仅托一足,百米长,走多了,腿便打抖了,害怕了,还不时地叫着好刺激呀。

最近在研究关于php生成图片的东西,发现了 imagettftext() 函数中一个不是错误的错误,具体的错误情况如下所示。

错误代码:

imagettftext(): any2eucjp(): invalid code in input string 

错误原因:

在编译php的时候,开启了 --enable-gd-jis-conv 这个选项,而这个选项是对日文的支持,而我们使用utf-8编码的中文时会被识别成日本,所以会抛出一个错误,通俗来说这个错误是一个php本身的BUG,并不是代码的问题。

解决方法:

下面提供两种解决方法,看自己使用那一种。

1、重新编译php,并关闭 --enable-gd-jis-conv 这个选项

2、对字符串进行一个处理

处理代码如下:

// 这里是一个处理函数
function to_entities($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;
}
//函数的使用
imagettftext($im, 11, 0, 5, 11, $black, $font,  to_entities($text));

到此这篇关于imagettftext(): any2eucjp(): invalid code in input string 错误如何解决方法就介绍到这了。读不完架上古书却要时时努力,做不完世间好事却要刻刻用心。更多相关imagettftext(): any2eucjp(): invalid code in input string 错误如何解决方法内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

标签: php教程 php