Page 1 sur 2

[R] Encodage de la sortie console

Posté : mar. 11 juin 2019 12:31
par GMH
Bonjour,

Sauriez-vous où trouver une éventuelle page de code de console. Je souhaiterais choisir l'encodage qui conviendrait pour afficher dans la console des mots en langue étrangère (programme exécuté sans compilation depuis SciTE).

Je vous remercie.

Re: [..] Encodage de la sortie console

Posté : mar. 11 juin 2019 15:44
par jchd
Sans plus de précision, difficile d'apporter une réponse pertinente.
Quel script étanger ?
La console est-elle en UTF8 ou en page de code Windows ?
Appli CUI ou GUI ?

Re: [..] Encodage de la sortie console

Posté : mer. 12 juin 2019 17:52
par GMH
Bonjour et merci pour votre message,

J'utilise la fonction "Éxécuter" du menu "Outils" de l'éditeur SciTe. Sans GUI.

J'ai essayé toutes les possibilités listées dans le menu "Fichier / Encodage". Aucun des encodages proposés n'affiche les caractères GRECS dans la console. Mais ils s'affichent très bien dans les lignes de programmation et le programme destiné à rechercher/trier/classer des mots grecs dans des fichiers-textes écrits en caractères grecs, fait bien son travail . Par contre les résultats dans la console sont une suite de points d'interrogation ou de signes cabalistiques. Quant aux caractères accentués français, seuls les encodages UTF-16 et UTF-8 avec BOM les affichent. UTF-8 sans BOM ne les affiche pas.

Merci encore si vous pouvez m'aider à résoudre ce problème.

Re: [..] Encodage de la sortie console

Posté : mer. 12 juin 2019 22:33
par jchd
Dans SciTeUser.properties pour passer la console intégrée en UTF8, mettre :

Code : Tout sélectionner

code.page=65001
output.code.page=65001
Pour afficher de l'UTF8 depuis du code AutoIt lancé via Scite, utiliser ceci :

Code : Tout sélectionner

Global $CW = @Compiled ? __ConsoleWrite : _ConsoleWrite

Func __ConsoleWrite(ByRef $s)
	Local Static $hCon = __ConsoleInit()
	DllCall("kernel32.dll", "bool", "WriteConsoleW", "handle", $hCon, "wstr", $s & @LF, "dword", StringLen($s) + 1, "dword*", 0, "ptr", 0)
	Return
EndFunc

Func __ConsoleInit()
	DllCall("kernel32.dll", "bool", "AllocConsole")
	Return DllCall("kernel32.dll", "handle", "GetStdHandle", "int", -11)[0]
EndFunc

; Unicode-aware ConsoleWrite
Func _ConsoleWrite($s)
	ConsoleWrite(BinaryToString(StringToBinary($s & @LF, 4), 1))
EndFunc   ;==>_ConsoleWrite
et utiliser cette fonction au lieu de ConsoleWrite :

Code : Tout sélectionner

$CW("Καλησπέρα στο σπίτι!")
L'intérêt de la redirection via une variable est que ça fonctionne en CUI ou GUI, depuis Scite ou compilé.

Re: [..] Encodage de la sortie console

Posté : jeu. 13 juin 2019 11:28
par GMH
Bonjour et déjà un grand merci pour votre longue réponse et ce code que j'aurais été bien incapable de créer.

- J'ai modifié le fichier SciTEUser.properties en ajoutant les 2 lignes
- J'ai ajouté à mon code la variable $CW et les fonctions Func __ConsoleWrite(ByRef $s) ; Func __ConsoleInit() ; Func _ConsoleWrite($s)

Si les lignes de code sont bien encodées en UTF-8, l'affichage dans la console n'a pas réussi. J'obtiens toujours dans la console :

Code : Tout sélectionner

 caractère  trouvé : ᾣ
au lieu de :

Code : Tout sélectionner

caractère trouvé : ᾣ

Re: [..] Encodage de la sortie console

Posté : jeu. 13 juin 2019 13:42
par jchd
Postez un bout de code court qui montre le problème.

Re: [..] Encodage de la sortie console

Posté : jeu. 13 juin 2019 14:27
par walkson
Bonjour,
@jchd
Ce n'est pas dans SciTEGlobal.properties qu'il faut modifier (ligne 308 et 314) ?.....
# Unicode
#~ code.page=65001
code.page=0
#character.set=204
#command.discover.properties=python /home/user/FileDetect.py "$(FilePath)"
# Required for Unicode to work on GTK+:
#LC_CTYPE=en_US.UTF-8
if PLAT_WIN
   output.code.page=0
if PLAT_GTK
   output.code.page=65001
if PLAT_MAC
   output.code.page=65001

Re: [..] Encodage de la sortie console

Posté : jeu. 13 juin 2019 15:06
par GMH
Bonjour,

Où se cache-t-il ce fichier SciTEGlobal.properties ?

Re: [..] Encodage de la sortie console

Posté : jeu. 13 juin 2019 15:14
par walkson
dans C:\Program Files\AutoIt3\SciTE
mais c'était une question, pas une affirmation !
RMQ: dans mon cas SciTEUser.properties est dans le même dossier mais aussi dans C:\Users\PC\AppData\Local\AutoIt v3\SciTE

Re: [..] Encodage de la sortie console

Posté : jeu. 13 juin 2019 19:29
par GMH
Voici un petit bout de code pour tester :

Code : Tout sélectionner

Global $texte = "τὴν δ' ὁ Κυλλήνιος ἐν βρυώδει ἄντρῳ ἔτετμε κερκίδι βύσσον ὑφαίνουσαν"
Global $splitTexte = StringSplit($texte," ")
Global $CW = @Compiled ? __ConsoleWrite : _ConsoleWrite

For $i = 1 To UBound($splitTexte) - 1
	$CW($i & "° mot affiché : " & $splitTexte[$i] & @CRLF)
Next

Func __ConsoleWrite(ByRef $s)
	Local Static $hCon = __ConsoleInit()
	DllCall("kernel32.dll", "bool", "WriteConsoleW", "handle", $hCon, "wstr", $s & @LF, "dword", StringLen($s) + 1, "dword*", 0, "ptr", 0)
	Return
EndFunc

Func __ConsoleInit()
	DllCall("kernel32.dll", "bool", "AllocConsole")
	Return DllCall("kernel32.dll", "handle", "GetStdHandle", "int", -11)[0]
EndFunc

; Unicode-aware ConsoleWrite
Func _ConsoleWrite($s)
	ConsoleWrite(BinaryToString(StringToBinary($s & @LF, 4), 1))
EndFunc   ;==>_ConsoleWrite

Re: [..] Encodage de la sortie console

Posté : jeu. 13 juin 2019 19:42
par jchd
Ah oui, peut-être. Depuis un long bail, je ne touche plus que très rarement à cet trucs-là et du coup je patauge pour m'y retrouver.
Je pense que les fichiers SciTEGlobal.properties et SciTEUser.properties qui se trouvent dans C:\Program Files (x86)\AutoIt3\SciTE sont des modèles installés avec SCiTe4AutoIt3 et, si je capte le principe, les réglages de C:\Users\PC\AppData\Local\AutoIt v3\SciTE\SciTEUser.properties ont la priorité.

EDIT : j'ai corrigé les chemins

Re: [..] Encodage de la sortie console

Posté : jeu. 13 juin 2019 20:38
par GMH
Je n'ai pas le fichier SciTEGlobal.properties.
Je vous ai mis plus haut un bout de code pour tester l'affichage dans la console.

Re: [..] Encodage de la sortie console

Posté : ven. 14 juin 2019 00:53
par jchd
J'ai corrigé les chemins dans mon post du dessus.

Ici, le script donne ça :
>"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "C:\Users\jc\Documents\AutoMAT\tmp\tstutf.au3" /UserParams
+>00:47:05 Starting AutoIt3Wrapper v.19.102.1901.0 SciTE v.4.1.2.0 Keyboard:0000040C OS:WIN_7/Service Pack 1 CPU:X64 OS:X64 Environment(Language:040C) CodePage:65001 utf8.auto.check:4
+> SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE UserDir => C:\Users\jc\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\jc\AppData\Local\AutoIt v3\SciTE
>Running AU3Check (3.3.14.5) from:C:\Program Files (x86)\AutoIt3 input:C:\Users\jc\Documents\AutoMAT\tmp\tstutf.au3
+>00:47:06 AU3Check ended.rc:0
>Running:(3.3.14.5):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Users\jc\Documents\AutoMAT\tmp\tstutf.au3"
+>Setting Hotkeys...--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
1° mot affiché : τὴν

2° mot affiché : δ'

3° mot affiché : ὁ

4° mot affiché : Κυλλήνιος

5° mot affiché : ἐν

6° mot affiché : βρυώδει

7° mot affiché : ἄντρῳ

8° mot affiché : ἔτετμε

9° mot affiché : κερκίδι

10° mot affiché : βύσσον

11° mot affiché : ὑφαίνουσαν

+>00:47:06 AutoIt3.exe ended.rc:0
+>00:47:06 AutoIt3Wrapper Finished.
>Exit code: 0 Time: 1.873

Re: [..] Encodage de la sortie console

Posté : ven. 14 juin 2019 00:58
par jchd
Voici mon SciTeGlobal et mon SciTe User.
tmp.zip
(7.83 Kio) Téléchargé 353 fois

Re: [..] Encodage de la sortie console

Posté : ven. 14 juin 2019 10:30
par GMH
Bonjour,

Malgré votre aide, et après comparaison de vos fichier properties et les miens, je ne suis pas parvenu à obtenir un affichage correct dans la console. J'obtiens ceci :

Code : Tout sélectionner

>"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "C:\grec\test_utf-8.au3" /UserParams    
+>10:20:36 Starting AutoIt3Wrapper v.19.102.1901.0 SciTE v.4.1.2.0   Keyboard:0000040C  OS:WIN_10/  CPU:X64 OS:X64  Environment(Language:040C)  CodePage:0  utf8.auto.check:4
+>         SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE   UserDir => C:\Users\EGO\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper   SCITE_USERHOME => C:\Users\EGO\AppData\Local\AutoIt v3\SciTE 
>Running AU3Check (3.3.14.5)  from:C:\Program Files (x86)\AutoIt3  input:C:\grec\test_utf-8.au3
+>10:20:37 AU3Check ended.rc:0
>Running:(3.3.14.5):C:\Program Files (x86)\AutoIt3\autoit3_x64.exe "C:\grec\test_utf-8.au3"    
+>Setting Hotkeys...--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
1° mot affiché : τὴν

2° mot affiché : δ'

3° mot affiché : ὁ

4° mot affiché : Κυλλήνιος

5° mot affiché : ἐν

6° mot affiché : βρυώδει

7° mot affiché : ἄντρῳ

8° mot affiché : ἔτετμε

9° mot affiché : κερκίδι

10° mot affiché : βύσσον

11° mot affiché : ὑφαίνουσαν

+>10:20:37 AutoIt3.exe ended.rc:0
+>10:20:37 AutoIt3Wrapper Finished.
>Exit code: 0    Time: 1.26
J'ai donc pris les grands moyens : désinstallation d'AutoIt et réinstallation à partir de l'adresse viewtopic.php?t=246

Mais pas mieux !

J'ai téléchargé le fichier devant traduire les menus de SciTE en français. Mais je n'ai sans doute pas su faire car l'éditeur reste en langue anglaise.

Re: [..] Encodage de la sortie console

Posté : ven. 14 juin 2019 10:59
par jchd
Il y a quand même une différence de poids !
Dans ma sortie console, AutoIt3Wrapper indique clairement CodePage:65001
Dans la vôtre, on trouve CodePage:0

Re: [..] Encodage de la sortie console

Posté : ven. 14 juin 2019 11:37
par GMH
Ευρεκα ! Vous avez trouvé !

Vous travaillez sans doute sous Linux ou Mac, car dans votre fichier SciTEglobal , à la ligne 329, on trouve :

if PLAT_WIN
output.code.page=0

... et moi sous Windows. Votre fichier et le mien étaient bien identiques. Ça ne m'a pas fait tilt !



Sauriez-vous me guider pour franciser l'éditeur SciTE ? L'installation du fichier de Tlem n'a pas réussi. Je n'ai sans doute pas fait ce que j'aurais dû faire.

Déjà grand merci à vous.

Re: [..] Encodage de la sortie console

Posté : ven. 14 juin 2019 11:54
par jchd
Je tourne sous W7 x64.
Ce qui compte ici, c'est ce qu'il y a dans SCiTeUser car tout réglage de ce fichier prend le pas sur les valeurs par défaut listées dans SCiTeGlobal.

Par cntre je n'ai aucune idée sur ce que contient la distribution traduite ni comment s'en servir. Je préfère l'original à la copie, je dois avoir un ancêtre british ou alors j'ai trop nagé dans les docs US et EN.

Re: [R] Encodage de la sortie console

Posté : ven. 14 juin 2019 12:38
par GMH
C'est bizarre car mon SciTEUser.properties était identique au vôtre.
Aux lignes 35 et 36 , j'avais bien :

code.page=65001
output.code.page=65001

Peu importe. Maintenant ça marche. Je ne vous embête plus.

Je vous remercie encore et vous souhaite un bon week-end.

Re: [R] Encodage de la sortie console

Posté : lun. 17 juin 2019 16:16
par Tlem
Dans le Pack FR, ce sont bien les fichiers originaux qui sont utilisés. Le seul petit ajout consiste en la traduction d'UDF dans lesquels il resterait encore les termes Anglais concernant les jours de la semaine et les mois, sinon point de modifications sauvages ...