Ero proprio fuori strada, il problema non era l'encoding.

Innanzitutto la funzione va fatta scaturire all'evento keypress e non keydown. Il motivo per cui i risultati siano diversi rimane misterioso, comunque mi è stato consigliato di usare questo evento e in effetti funziona.
Qui di seguito la pagina con il risultato funzionante :

http://lab.gianiaz.com/jquery/filter_input/solved.html

Mi è stato fatto notare che per IE6 l'evento keypress non viene scaturito per alcuni caratteri non stampabili, come le frecce il backspace e altro, ma in questo caso non è importante.

ciao