|
[WD24] ConsoleEcrit et encodage des caractères. |
Débuté par Dergen, 10 déc. 2018 10:34 - 9 réponses |
| |
| | | |
|
| |
Membre enregistré 329 messages Popularité : +28 (32 votes) |
|
Posté le 10 décembre 2018 - 10:34 |
Bonjour, petite question sur l'encodage des caractères en mode console, si j'exécute ceci:
ConsoleEcrit("Pas d'affichage demandés.")
J'ai comme affichage dans mon CMD.exe sous windows 10:
Pas d'affichage demandÚs.
D'ou ma question, quel encodage le fonction ConsoleEcrit, utilises-t-elle ?
-- ——————————————————————————————————— Ce qui se conçoit bien se code clairement et se débogue facilement...
- Pastiche d’une citation de Nicolas Boileau - |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 329 messages Popularité : +28 (32 votes) |
|
Posté le 10 décembre 2018 - 21:22 |
Personne n’a eu ce souci ?
-- ——————————————————————————————————— Ce qui se conçoit bien se code clairement et se débogue facilement...
- Pastiche d’une citation de Nicolas Boileau - |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 10 décembre 2018 - 23:48 |
hello, cela ressemble fort à un problème de conversion OEM - ANSI essaie avec :
ConsoleEcrit(AnsiVersOem("Pas d'affichage demandés.")) ou
ConsoleEcrit(OemVersAnsi("Pas d'affichage demandés."))
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 28 messages Popularité : +1 (1 vote) |
|
Posté le 11 décembre 2018 - 08:29 |
Bonjour Dergen,
Dans beaucoup de forum, autre que le WLangage, il parle d'UTF-8. Par contre, ça n'a pas l'air de fonctionner partout et sur tous les OS windows. La console windows est capricieuse sur les accents, par défaut elle ne prends aucun accent, obligé de passer par le bon encodage. En C, pendant un temps, il fallait faire une correspondance des lettres à accent en héxadécimale pour qu'elles soient prisent en compte.
-- (\ _ /) (='.'=) (")-(") |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 329 messages Popularité : +28 (32 votes) |
|
Posté le 11 décembre 2018 - 21:34 |
J’avais testé l’UTF8 et l’Unicode mais j’ai pas pensé à l’OEM
-- ——————————————————————————————————— Ce qui se conçoit bien se code clairement et se débogue facilement...
- Pastiche d’une citation de Nicolas Boileau - |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 329 messages Popularité : +28 (32 votes) |
|
Posté le 17 décembre 2018 - 13:45 |
J'ai testé la solution proposé : 'AnsiToOem' et même punition j'ai un '?' a la place d'un 'é'..
Une idée ?
-- ——————————————————————————————————— Ce qui se conçoit bien se code clairement et se débogue facilement...
- Pastiche d’une citation de Nicolas Boileau - |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 28 messages Popularité : +1 (1 vote) |
|
Posté le 17 décembre 2018 - 14:03 |
As tu essayer la commande suivant dans la console. Donc à exécuter au tout début de ton code :
c:\> chcp 1252
C'est pour modifier l'encodage de la console. https://ss64.com/nt/chcp.html pour supporter l'unicode. Le 1252 est pour West European Latin
-- (\ _ /) (='.'=) (")-(") |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 329 messages Popularité : +28 (32 votes) |
|
Posté le 17 décembre 2018 - 19:10 |
Non, pas essayé mais je vais le faire.
Il serait plus simple si PCSOFT nous donnais le format de sortie de sa console.
-- ——————————————————————————————————— Ce qui se conçoit bien se code clairement et se débogue facilement...
- Pastiche d’une citation de Nicolas Boileau - |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 962 messages Popularité : +183 (185 votes) |
|
Posté le 18 décembre 2018 - 00:26 |
hello, comme je n'ai que la version 16 de windev je ne peux pas faire d'essai avec consoleécrit mais avec ce code qui ouvre une fenêtre console :
// un exemple d'application Console avec Windev FOREGROUND_BLUE est un entier long = 0x1 FOREGROUND_GREEN est un entier long = 0x2 FOREGROUND_RED est un entier long = 0x4 BACKGROUND_BLUE est un entier long = 0x10 BACKGROUND_GREEN est un entier long = 0x20 BACKGROUND_RED est un entier long = 0x40 BACKGROUND_INTENSITY est un entier long = 0x80 BACKGROUND_SEARCH est un entier long = 0x20 FOREGROUND_INTENSITY est un entier long = 0x8 FOREGROUND_SEARCH est un entier long = 0x10 STD_OUTPUT_HANDLE est un entier long = -11 STD_INPUT_HANDLE est un entier long = -10 STD_ERROR_HANDLE est un entier long = -12 INVALID_HANDLE_VALUE est un entier long = -1
hWnd est un entier hcOut est un entier long hcIn est un entier long hcErr est un entier long lpBuffer, lpTitle sont des chaînes ASCIIZ sur 255
// Obtenir mon handle hWnd = Handle()
// Crée la console SI AppelDLL32("kernel32","AllocConsole") ALORS hcOut = AppelDLL32("kernel32","GetStdHandle", STD_OUTPUT_HANDLE) SI hcOut = INVALID_HANDLE_VALUE ALORS Erreur("Impossible d'obtenir le STDOUT") hcIn = AppelDLL32("kernel32","GetStdHandle", STD_INPUT_HANDLE) SI hcOut = INVALID_HANDLE_VALUE ALORS Erreur("Impossible d'obtenir le STDIN") SINON Erreur("Impossible d'allouer une console") FIN // Mettre un titre pour la fenêtre console AppelDLL32("kernel32","SetConsoleTitleA", "Console Windev")
// Mettre une couleur de fond et de texte dans la console en // texte jaune brillant sur fond bleu AppelDLL32("kernel32","SetConsoleTextAttribute", hcOut, ... FOREGROUND_RED + FOREGROUND_GREEN + ... FOREGROUND_INTENSITY + BACKGROUND_BLUE) // Ecrire quelque chose dans la console texteConsole est une chaîne = "Pas d'affichage demandés." + RC AppelDLL32("kernel32","WriteConsoleA", ... hcOut, texteConsole, Taille(texteConsole), &hcErr, Null) texteConsole = AnsiVersOem("Pas d'affichage demandés." + RC)
AppelDLL32("kernel32","WriteConsoleA", ... hcOut, texteConsole, Taille(texteConsole), &hcErr, Null)
// Enfin détruire la console // AppelDLL32("kernel32","CloseHandle", hcOut) // AppelDLL32("kernel32","CloseHandle", hcIn) // AppelDLL32("kernel32","FreeConsole")
j'obtiens ceci :
on constate que le AnsiVersOem "rétablit" l'accentuation.
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 352 messages Popularité : +12 (18 votes) |
|
Posté le 18 décembre 2018 - 09:10 |
Bonjour, Je n'ai pas la version 24 de Windev, mais ce que je constate, c'est que dans la doc de ConsoleEcrit, ils entrent cet exemple de code
ConsoleEcrit("Opération réussie")
Pour moi, si l'affichage n'est pas correct, c'est simplement dans l'attente d'un patch correctif |
| |
| |
| | | |
|
| | | | |
| | |
|