Была такая же проблема, encodeURIComponent не кодировал одинарные кавычки.Хитрость заключается в том, чтобы заменить '% 27, после кодировкой:
var trackArtistTitle = encodeURIComponent("Johnny Vegas - Who's Ready Fo'r Ice Cre'am")
// result: Johnny%20Vegas%20-%20Who's%20Ready%20Fo'r%20Ice%20Cre'am
trackArtistTitle = trackArtistTitle.replace(/'/g, '%27')
// result: Johnny%20Vegas%20-%20Who%27s%20Ready%20Fo%27r%20Ice%20Cre%27am
Таким образом, trackArtistTitle будет правильно декодирован на сервере, то есть с помощью PHP с использованием urldecode ().