@sparrow: Das ist keine Frage der eingestellten Codepage. `chr()` wandelt einen Unicode-Codepoint in ein Unicode-Zeichen um. Das ist eindeutig und unabhängig vom Betriebssystem und dessen Einstellungen.
Wenn man eine bestimmte Codepage darstellen möchte, müsste man ein Bytearray mit aufsteigenden Werten dekodieren, eventuell mit "replace" als `errors`-Argument und dann für die Anzeige auch noch mal extra auf das „replacement character“-Zeichen (�) prüfen und reagieren. Dann gibt es drei Fälle: darstellbares Zeichen, nicht darstellbares Zeichen, und in der Codepage nicht zugeordneter Bytewert. Ohne Farbe oder irgendeine andere Markierung wird es dann langsam nicht mehr so eindeutig das in einer Tabelle darzustellen.
@3.1415926: Noch mal: Die Tabelle ist falsch beschriftet, das ist *keine ASCII-Tabelle* in dem Bild. Vergiss das Bild! Das ist falsch. Das Bild ist nicht korrekt. Lies den Wikipediaartikel zu ASCII.
Wenn Du eine ASCII-Tabelle ausgeben sollst, dann gib nur die Zeichen für Werte bis 127 aus, denn nur die sind in ASCII definiert. Wobei 127 selbst zwar in ASCII definiert ist, aber wie die Zeichenwerte <32 kein darstellbares Zeichen kodiert. Also entweder auch explizit weg lassen, oder wie /me vorgeschlagen hat nicht darstellbare Zeichen durch ein Leerzeichen oder irgend etwas anderes darstellen. Ein Punkt ist auch nicht unüblich um nicht darstellbare Zeichencodes anzuzeigen. Und Du solltest da explizit etwas anzeigen weil das Terminal sonst komische Sachen macht, also entweder das irgendwie als Steuerzeichen interpretiert, oder *nichts* anzeigt, was in beiden Fällen das Layout der Tabelle stören kann.
Die Tabelle sieht auch für eine Codepage komisch aus IMHO. Mich würde da ja wirklich mal die Quelle interessieren.
Edit: Nachtrag, das sieht nach der DOS Codepage 850 aus:
https://en.wikipedia.org/wiki/Code_page_850