encodeURIComponent kodiert alles außer Buchstaben, Ziffern und - _ . ! ~ * ' ( ). Nimm es für einzelne Werte, die in eine URL eingesetzt werden, etwa einen Suchbegriff oder einen Parameter.
encodeURI lässt zusätzlich die Zeichen stehen, die eine URL gliedern (; , / ? : @ & = + $ #). Nimm es für eine ganze URL, die nur Leerzeichen oder Umlaute enthält. Für einen einzelnen Wert ist es falsch: Ein & im Wert würde sonst einen neuen Parameter beginnen.
Umlaute und Emoji werden als UTF-8-Bytes kodiert, ä wird zu %C3%A4.