Insertion avec "ALT + x" ne fonctionne pas avant le 32

JiGéGé Messages postés 3960 Statut Membre -  
brucine Messages postés 23099 Statut Membre -

Bonjour,

Hello,

L'insertion des 31 premiers caractères ASCII par la manipulation "Alt +..." ne fonctionne pas.
En revanche, à partir du #32 (-espace-, !, " etc.), tout apparaît très bien et sans hésiter.

Comment se fait-ce et que faut-il faire pour que ça marche ? Merci.

Sous Win11 pro - 23H2


1 réponse

blux Messages postés 27836 Statut Modérateur 3 364
 

Salut,

les caractères avant 32 sont des caractères de service qui provoquent une action (saut de ligne, bip, tabulation, acquittement de transmission...), ils ne sont donc pas affichables.


0
brucine Messages postés 23099 Statut Membre 3 585
 

Bonjour,

La plupart si.

ALT+14



Ils dépendent de la langue Windows, de la police utilisée, et aussi du logiciel où on veut les saisir (il peut exister d'autres combinaisons de touches ou aucune dans certains).

0
blux Messages postés 27836 Statut Modérateur 3 364 > brucine Messages postés 23099 Statut Membre
 

Ce qu'on affiche, ce sont des symboles qui n'ont pas forcément de rapport avec le code.

ALT-5 affiche l'enseigne trèfle alors que ça correspond à 'ENQ'.

ALT-12 affiche le symbole 'femelle' alors que c'est un saut de page.



 

0
brucine Messages postés 23099 Statut Membre 3 585 > blux Messages postés 27836 Statut Modérateur
 

Il s'agit bien sûr d'afficher les symboles correspondants quand ils existent, pas le caractère de contrôle.

Dans ce dernier cas, il existe différents subterfuges propres au caractère considéré.

Si par exemple je veux colorer un Batch comme suit:
 

Je dois utiliser le caractère d'échappement ESC qui ne sera pas rendu par ALT+27.
 

@echo off
echo [0;40;36;1mCeci est cyan [0;40;31;1mceci est rouge[0m

pause

Il doit figurer, ici on ne le voit pas, avant chaque crochet et il apparaît dans le texte comme un point d'interrogation dans un rectangle.

On peut le piquer sur Internet en faisant un copier-coller qu'on sauvegarde dans un fichier ou faire la même chose soi-même dans un Batch:

FOR /F "delims=#" %%E IN ('"prompt #$E# & FOR %%E IN (1) DO REM"') DO SET "ESC=%%E"
ECHO %ESC% > esc.txt
0