Megkérdeztem, hogy mivel csak ASCII karakaterekkel dolgozik a függvény, minek ez a további paraméter.
Ezt nem igazán értem. Ha megnézed az $encoding paraméter lehetséges értékeit, egyáltalán nem csak ASCII-kompatibilis string lehet a függvény bemenete.
Lehet azon Big5 kódolású string is, vagy éppen GB2312. Ezekben a karakterkészletekben/karakterkódolásokban is értelmezve vannak a HTML számára jelentéssel bíró, ezért escape-elendő karakterek, az az 5, aminek az escape-lését a htmlspecialchars csinálja.
ha ez egy valós opció, akkor nem kellene-e egy mégtovábbi paraméter, ami a második paraméter kódolását tartalmazza?
Miért kéne? A forrásfájl kódolását meg lehet adni a declare(encoding=) függvény meghívásával, meg persze a php.ini-ben is, a zend.script_encoding beállításával globálisan.