问题描述
|
我有以下字符串:
ᴰᴶ 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
解决方法
我最初以为这是您的编码问题,但是如果我从soundcloud源页面本地复制并粘贴这些字符,请执行以下操作:
ᴰᴶ Bagi
尝试iconv他们,我得到的结果与您相同。这意味着数据是UTF-8,但是iconv不能将ᴰ
识别为D
的\“ child \”。无法转换字符,它抱怨(有点误导海事组织)非法字符。
编辑:这确实的确如此。上标D不在Unicode上标和下标范围内,但是它是一个语音字符。这可能就是为什么无法将它们映射回其“父”字母的原因。这是有关ᴰ
的更多信息
据我所知,您唯一的选择是手动替换字符。
最原始的替换示例是
str_replace(\"ᴰ\",\"D\",$string);
(请注意,您的源文件需要存储为UTF-8才能正常工作)
对于一个优雅的解决方案,您可以根据源字符和替换字符构建一个数组,然后将其传递给str_replace
调用。
或致电DJ Bagi并告诉他弄明白该死的信件。您会注意到,Soundcloud的URL构建器遇到了完全相同的问题。
soundcloud.com/bagi