I'm new to Python and I'm learning coding/encoding, unicode, ascii and so on. I would like to print ASCII characters according to their codes and using chr() function.
def table_ascii():
"procédure imprimant une table des caractères ascii avec leur valeurs"
i = 127
while i < 258:
print(f"{i} -> {chr(i)}")
i += 1
table_ascii()
Unfortunately, the result is wrong. It stops at the code 157 :
127 ->
128 ->
129 ->
130 ->
131 ->
132 ->
133 ->
134 ->
135 ->
136 ->
137 ->
138 ->
139 ->
140 ->
142 ->
143 ->
144 ->
146 ->
147 ->
148 ->
149 ->
150 ->
151 ->
152 ->
154 ->
155 ->
157 ->
I understand these codes return blank but why do they stop the process?
Setup:
When I run this code in Visual Studio Code, the script produces output through 256. But in my console (Linux Mate), it blocks. That's difficult to understand for me...
Firstly, ASCII only goes up to 127 (0x7F). chr()
actually returns the Unicode character.
I think the problem is that when U+9D (157) Operating System Command (OSC) is printed, your terminal starts a control string and waits for a String Terminator like U+9C String Terminator, U+1B Escape followed by U+5C backslash, or U+7 BEL. Since none of those sequences are ever printed later, the terminal stops showing the output. For more info, see ANSI escape code § Fe Escape sequences and C1 control codes on Wikipedia.
Unicode characters U+80 (128) to U+9F (159) are control characters, meaning they're not generally printable, so you were never going to get sensible output in the first place.