1. в интернете полно классов по работе с json в любой локале, но они в 1000 раз медленнее встроенной функции
2. никто не мешает пройтись по входным данным, найти все строки( или все нужные строки) и провести их через iconv
3. да, единственный супер стабильный вариант — utf-8 везде