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