Richtige Stelle zum Encoden?

Ich war bisher immer ein Verfechter der „jeglichen Input sofort encoden“-Schiene. Heißt: Bevor ich Benutzereingaben in der Datenbank abspeichere / eine Bestätigungsemail versende etc. werden die Daten encodet (htmlentities oder ähnliches). Nun bin ich auf diesen sehr interessanten Artikel gestoßen (inspiriert durch einen Post zur ungarischen Notation beim phphacker), der folgende Position vertritt:

For example maybe you want to store these user strings in a database somewhere, and it doesn’t make sense to have them stored HTML-encoded in the database, because they might have to go somewhere that is not an HTML page, like to a credit card processing application that will get confused if they are HTML-encoded. Most web applications are developed under the principle that all strings internally are not encoded until the very last moment before they are sent to an HTML page, and that’s probably the right architecture.

Macht irgendwie auch Sinn wenn man mal so drüber nachdenkt. Ich fühle mich aber wohler, wenn ich davon ausgehen kann, dass sämlicher Inhalt der Datenbank clean ist und ich ihn bedenkenlos ausgeben kann. Man kann natürlich auch vor jeglicher Ausgabe von Strings erst das Encoding vollziehen – aus oben genannten, nachvollziehbaren Gründen. Man sollte sich wohl – wie so oft – nur auf eine Art einigen.