首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JpGraph中缺少的字符

JpGraph中缺少的字符
EN

Stack Overflow用户
提问于 2010-04-19 08:30:02
回答 1查看 2.4K关注 0票数 1

我有一个运行在Windows上的网站,它使用cp1252 (又名Win-1252),这样它就可以显示西班牙字符。这个应用程序用JpGraph 2.3生成了一些情节。这些绘图使用字体系列来显示文本标签。ANSI (即cp1252)中提供字符串,字体文件支持cp1252 (实际上,*.ttf文件是从系统的字体文件夹中复制的)。

它在PHP/5.2.6到PHP/5.3.0的几个设置中运行良好。当我在PHP/5.3.1下运行这个应用程序时,问题就开始了:所有非ASCII都被表示缺失或未知字符的空心矩形所取代。

JpGraph的文档并不是很精确地描述了它期望国际字符的方式。显然,文本在内部由imagettftext()函数处理,该函数期望UTF-8。然而,当UTF-8破坏所有系统中的应用程序时,所有的编码都会被破坏。在ANSI过去工作得很好的地方,我看到了错误的字符(而不是)。在我丢失字符的地方,现在我得到了一个PHP错误:

警告: imagettftext():any2eucjp():发生了什么

您是否知道GD2中从PHP5.3.0到5.3.1的变化可能会影响非ASCII字符的呈现?如何使用Win-1252字符集中的字符串向JpGraph提供数据?

更新

确切地说,这个问题与JpGraph无关。我可以通过对imagettftext()的简单调用来再现这个问题:

代码语言:javascript
复制
<?php

$im = imagecreatetruecolor(400, 30);

$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

//$text = 'áéíóú ÁÉÍÓÚ'; # ANSI
$text = utf8_encode('áéíóú ÁÉÍÓÚ'); # UTF8

$font = '/path/to/tahomabd.ttf';
imagettftext($im, 15, 0, 10, 25, $black, $font, $text);

header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);

?>

在PHP/5.3.0中,ANSI和UTF-8都呈现正确的文本。在PHP/5.3.1中,ANSI呈现错误字符,UTF-8触发any2eucjp(): something happen内部错误。我敢说我撞到了虫子..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-29 14:47:58

我的调查结果摘要:

  1. --它可能是PHP/5.3.1 (或我的PHP/5.3.1二进制构建中的一个bug );PHP/5.3.2不再遗漏字符或抛出警告。
  2. A的解决方案是用数字

实体对非ASCII字符进行编码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2666105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档