将非 Unicode、非英语的内容转换为 Unicode

3

我有一个使用“xyz”语言编写的文本内容。

<p style="font-family:xyz;"> eWvS³: kmwkMnsâ kq¸Àt^mWmb KmeIvkn kocoknsâ aq¶mw]Xn¸v </p>
// It will not display correctly as font is not embedded.

这里的字体“xyz”(xyz.ttf)是非 Unicode 字体。

现在我想要将那个“XYZ”(xyz.ttf)字体的文本转换为 Unicode 的“PQR”(pqr.ttf)字体。

简单来说,就是将非 Unicode 中文字体(non_uni_chinese.ttf)转换为 Unicode 中文字体(uni_chinese.ttf)。

我该如何使用 PHP 实现呢?请帮忙提供一下方法吧。


你确定 "xyz.ttf" 文件包含 Unicode 字符吗?正常字符能否正常渲染? - user1299518
"xyz.ttf" 是一种非Unicode字体,而 "pqr.ttf" 则是Unicode字体。文本 "eWvS³: kmwkMnsâ kq¸Àt^mWmb...." 目前使用的是非Unicode字体 "XYZ"。 - TheKid
2个回答

2
您必须“逐个字符”地进行此操作。
这意味着您必须将“非Unicode中文”字体中的每个字符替换为Unicode字体中的字符。 我不太了解中文,但在越南,他们使用以下方式:
1. 用Unicode字体编写包含“非Unicode”字体的字符串,这些字符将无法正确显示。例如:Ñaây laø Tieáng Vieät <- 这是一个使用Unicode字体编写的非Unicode越南语。 2. “逐个字符”替换。例如:Ñ = Đ; aâ = â; aø = 2;... 3. 然后我们得到这个结果:Đây là Tiếng Việt。
当然,我们不是逐步执行,我们使用称为“Unikey”的软件来执行此操作。
我相信在中文中有一种软件可以做到这一点。这里的重点是您必须在PHP中再次“执行”它。
以下是一些可以帮助您的内容:http://www.pinyin.info/tools/converter/chars2uninumbers.html 祝你好运。

谢谢TrungDQ,听起来很合理,我已经开始相应的编码了。还要感谢转换工具。 - TheKid

0

我也想到了iconv()。但是不知道如何正确使用。能否再解释一下?谢谢。 - TheKid
在进行iconv之前,您需要知道这个字符串的编码方式,也就是所说的语言。 - user1299518
编码?我有两种字体,我有这个字符串,我知道它是用“xyz”语言编写的。说:从非Unicode中文(non_uni_chinese.ttf)到Unicode中文(uni_chinese.ttf)。亲爱的,清楚吗?谢谢。 - TheKid
iconv无法将非Unicode编码转换为Unicode。您应该指定源字符串的编码和结果编码(在您的情况下,我猜是utf-8)。作为替代方案,您可以使用php的多字节库扩展的mb_detect_encoding函数来检测源文本的编码http://php.net/manual/en/function.mb-detect-encoding.php,并使用mb_convert_encoding作为iconv的替代方案。但根据我的经验,这些函数经常做错事情。我不明白一件事:为什么您在页面上使用不同的编码? - Ivan Fateev
@JohnPoison 非Unicode字符串来自远程URL,我需要将其转换为Unicode以适用于Palm设备。 - TheKid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接