gpt4 book ai didi

PHP GD imagettftext 字符编码,符号缺失

转载 作者:搜寻专家 更新时间:2023-10-31 22:12:25 24 4
gpt4 key购买 nike

我收到一个字符串,格式如下

Ciel Spa at SLSâ„¢ is a celestial dreamscape

我有一个格式化脚本可以将其更改为

Ciel Spa at SLS™ is a celestial dreamscape

脚本改变了编码

return iconv("UTF-8", "ISO-8859-1//TRANSLIT//IGNORE", $str)

上面的 iconv() 通常会将商标符号作为普通字符 TM 返回。这对我不起作用,所以我将符号替换为稍后可以捕获的字符串。

str_replace("(TM)","™",$str);

当我在浏览器中查看源代码时,这非常有效,但是当我将此文本推送到 imagettftext() 时,商标符号将被忽略,从而有效地生成字符串

Ciel Spa at SLS is a celestial dreamscape

但当然渲染为图像。

我知道我使用的字体支持商标符号,但我不确定它为什么消失了。 mb_detect_encoding() 返回 null,而对于我的大多数字符串,它返回 UTF-8。

我已经准备好接受一个艰难的、肮脏的解决方法,因为到目前为止没有任何效果。我尝试使用 html_entity_decode() 和 str_replace() 的组合但无济于事。同一格式化脚本的早期版本结合了一长串 UTF 垃圾字符替换,没有更改字符串的编码,然后将其提供给 imagettftext() 并且看起来很好。我似乎无法恢复……有什么想法吗??

最佳答案

iso-8859-1 字符编码中根本没有包含商标符号。您没有显示任何内容的原因是因为您要用超出此字符集范围的符号替换有效的 iso-8859-1 字符串的一部分。

您可以尝试使用 utf-8 到 iso-8859-1 编码更改

function decode_characters($info) 
{
$info = mb_convert_encoding($info, "HTML-ENTITIES", "UTF-8");
$info = preg_replace('~^(&([a-zA-Z0-9]);)~',htmlentities('${1}'),$info);
return($info);
}

此代码来自对 php 手册页的一些快速研究。

关于PHP GD imagettftext 字符编码,符号缺失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11419036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com