PeeHaa
PeeHaa

Reputation: 72672

Get iconv to convert my string

I have the following string:

ᴰᴶ Bagi

Is it possible to let iconv make it into DJ Bagi?

First I tried with:

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

Which resulted in the following notice:

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

On the PHP site I saw someone using:

//IGNORE//TRANSLIT

While this prevents the notice I only get:

Bagi

Upvotes: 4

Views: 1163

Answers (1)

Pekka
Pekka

Reputation: 449435

I initially thought that this is an encoding problem on your end, but if I copy + paste those characters locally from the soundcloud source page:

ᴰᴶ Bagi

and try to iconv them, I get the same result as you do. That means that the data is UTF-8, but iconv does not recognize as a "child" of D. Unable to convert the character, it complains (a bit misleadingly IMO) about an illegal character.

Edit: This seems indeed true. Superscript D is not in the Unicode Superscripts and Subscripts range, but it's a phonetic character. That's probably why they can't be mapped back to their "parent" letter. Here is more info on

As far as I can see, your only choice is to replace the characters manually.

The most primitive example of a replace is

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

(note that your source file needs to be stored as UTF-8 for this to work)

For an elegant solution, you could build an array out of the source and replacement characters, and pass that to the str_replace call.

Or call DJ Bagi and tell him to get the damn letters straight. You will notice that Soundcloud's URL builder encountered exactly the same problem.

soundcloud.com/bagi 

Upvotes: 3

Related Questions