我有以下字符串:
ᴰᴶ Bagi
是否可以让iconv进入DJ Bagi
?
首先我尝试了:
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
导致以下通知:
Notice: iconv() [function.iconv]: Detected an illegal character in input string
在PHP网站上,我看到有人使用:
//IGNORE//TRANSLIT
虽然这可以阻止通知我只能得到:
Bagi
答案 0 :(得分:3)
我最初认为这是一个编码问题,但如果我从soundcloud源页面本地复制+粘贴这些字符:
ᴰᴶ Bagi
并尝试iconv,我得到与你相同的结果。这意味着数据为UTF-8,但 iconv无法将ᴰ
识别为D
的“子”。无法转换角色,它抱怨(有点误导IMO)非法角色。
编辑:这似乎确实如此。上标D不在Unicode Superscripts and Subscripts range中,但它是phonetic character。这可能就是为什么它们无法映射回他们的“父母”字母。 Here是关于ᴰ
据我所知,您唯一的选择是手动更换字符。
替换的最原始的例子是
str_replace("ᴰ", "D", $string);
(请注意,您的源文件需要存储为UTF-8才能生效)
为了获得优雅的解决方案,您可以使用源代码和替换字符构建数组,并将其传递给str_replace
调用。
或致电DJ Bagi并告诉他直截了当地说这些该死的字母。您会注意到Soundcloud的URL构建器遇到了完全相同的问题。
soundcloud.com/bagi