Ummm... myślę, że to jest poprawne sposób faktycznie. \u00df jest poprawną reprezentacją Unicode ß . Kiedy json_decode() to z powrotem, zmieni się w ß ponownie.
Gdzie to sprawia ci problemy? Czy odbiorca nie dekoduje go prawidłowo? Powinno, jeśli używasz standardowego json_* funkcje.
Wszystkie przykłady w podręczniku pokaż to samo - znaki spoza zakresu ASCII są zamieniane w sekwencje liczbowe.