php – 获取iconv转换我的字符串

我有以下字符串:

ᴰᴶ巴吉

是否有可能让iconv成为DJ Bagi?

首先我试过:

$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);

这导致以下通知:

Notice: iconv() [function.iconv]: Detected an illegal character in input string 

在PHP网站上,我看到有人使用:

// //忽略TRANSLIT

虽然这可以防止通知我只得到:

Bagi

解决方法:

我最初认为这是一个编码问题,但如果我从soundcloud源页面本地复制粘贴这些字符:

ᴰᴶ Bagi

并尝试iconv他们,我得到与你相同的结果.这意味着数据是UTF-8,但是iconv不认识ᴰ作为D的“孩子”.无法转换角色,它抱怨(有点误导IMO)非法角色.

编辑:这似乎确实如此.上标D不在Unicode Superscripts and Subscripts range中,但它是phonetic character.这可能是为什么他们无法映射回他们的“父母”字母. Here是关于more的更多信息

据我所知,您唯一的选择是手动替换字符.

替换的最原始的例子是

str_replace("ᴰ", "D", $string);

(请注意,您的源文件需要存储为UTF-8才能生效)

为了获得优雅的解决方案,您可以使用源代码和替换字符构建数组,并将其传递给str_replace调用.

或者打电话给DJ Bagi并告诉他直截了当地说这些该死的字母.您会注意到Soundcloud的URL构建器遇到了完全相同的问题.

soundcloud.com/bagi 
上一篇:解决“在windows里的记事本里编辑的汉字文本文件,上传到linux服务器上出现乱码“问题


下一篇:Ubuntu 下unzip 命令解压乱码