Mir ist nach wie vor nicht klar an welcher Stelle die Zeichen umgewandelt werden und an welcher Stelle du Hilfe benötigst. Wenn die Zeichen in ein Formular eingegeben werden, werden sie auch so 1:1 übertragen, d.h. du kannst serverseitig dieses Problem lösen. Was JS an dieser Stelle soll ist mir nicht klar.
Aaaalso. Ich habe eine Library, die der User sich herunterlädt und danach entweder lokal oder auf einem Webserver diese Library in seine selbstgeschriebene und von mir nicht kontrollierbare HTML-Seite einbindet.
Eine Funktion der Library hat auch mit der Übergabe von Strings zu tun, die dann angezeigt werden. Dabei kann es passieren, dass der User eine falsche Kodierung in seiner Datei angibt (über Meta-Tags oder bei XHTML über den XML-Tag), die bei ihm aber richtig "aussieht" weil der Editor z.B. die Datei als ANSI speichert, aber der Tag im Header UTF-8 angibt. Javascript interpretiert nun den String so, wie die Datei angeblich kodiert sein soll laut Header-Tag und nicht, wie sie wirklich kodiert ist.
Es gibt keine serverseitigen Interaktionen, der User kann die Lib auch komplett offline (nach Download ;) ) benutzen. Mit PHP wüsste ich wie ich das dekodieren oder umwandeln kann, aber da werden auch keine ungültigen Zeichen durch \uFFFD ersetzt.