[R] ConsoleWrite avec accents

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jlf
Niveau 2
Niveau 2
Messages : 15
Enregistré le : sam. 24 juil. 2010 13:42
Status : Hors ligne

[R] ConsoleWrite avec accents

#1

Message par jlf »

Bonjour,

J'ai besoin de faire un ConsoleWrite vers une console windows (ligne de commande) dont le texte est localisé (français), donc avec accents et autres. Que le fichier du code source soit au format ANSI ou UTF8, ou que j'essaye avec la double conversion ConsoleWrite(BinaryToString(StringToBinary($sString, $in), $out)), rien n'y fait....
Voir code ci-dessous, compilé pour la ligne de commande.
Si quelqu'un a la solution, merci d'avance :D

[codeautoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Version=Beta
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include-once

For $in=1 To 4
For $out=1 To 4
ConsoleWrite("$in = " & $in & ", out = " & $out & @CRLF)
_ConsoleWrite("terminé" & @CRLF,$in,$out)
Next
Next

Func _ConsoleWrite($sString,$in,$out)
Return ConsoleWrite(BinaryToString(StringToBinary($sString, $in), $out))
EndFunc[/codeautoit]
JL
Modifié en dernier par jlf le mer. 06 juil. 2016 19:33, modifié 2 fois.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] ConsoleWrite avec accents  

#2

Message par jchd »

Code : Tout sélectionner

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Version=Beta
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include-once

_ConsoleWrite("terminé : ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»ÁÂÀ©¢ãÃðÐÊËÈıÍÎÏÌÓßÔÒõÕµþÞÚÛÙýݱ‗¾¶§÷°·¹²³" & @CRLF)

Func _ConsoleWrite($sString)
	Return ConsoleWrite(__WinAPI_WideCharToMultiByte($sString, 850))
EndFunc   ;==>_ConsoleWrite

Func __WinAPI_WideCharToMultiByte($vUnicode, $iCodePage = 0, $bRetString = True)
	Local $sUnicodeType = "wstr"
	If Not IsString($vUnicode) Then $sUnicodeType = "struct*"
	Local $aResult = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $iCodePage, "dword", 0, $sUnicodeType, $vUnicode, "int", -1, _
			"ptr", 0, "int", 0, "ptr", 0, "ptr", 0)
	If @error Or Not $aResult[0] Then Return SetError(@error + 20, @extended, "")

	Local $tMultiByte = DllStructCreate("byte[" & $aResult[0] & "]")

	$aResult = DllCall("kernel32.dll", "int", "WideCharToMultiByte", "uint", $iCodePage, "dword", 0, $sUnicodeType, $vUnicode, _
			"int", -1, "struct*", $tMultiByte, "int", $aResult[0], "ptr", 0, "ptr", 0)
	If @error Or Not $aResult[0] Then Return SetError(@error + 10, @extended, "")

	If $bRetString Then Return DllStructGetData($tMultiByte, 1)
	Return $tMultiByte
EndFunc   ;==>__WinAPI_WideCharToMultiByte
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
jlf
Niveau 2
Niveau 2
Messages : 15
Enregistré le : sam. 24 juil. 2010 13:42
Status : Hors ligne

Re: [R] ConsoleWrite avec accents

#3

Message par jlf »

Merci !
Je pense que j'aurai pu chercher très très longtemps....
GMH
Niveau 6
Niveau 6
Messages : 227
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [R] ConsoleWrite avec accents

#4

Message par GMH »

Moi j'obtiens ça :
termin‚ : €‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯µ¶·¸½ÆÇÐÑÒÓÔiÖרÞàáâãäåæçèéêëìíñ=óôõöøúûýü
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] ConsoleWrite avec accents

#5

Message par jchd »

Une fois compilé et lancé dans une console DOS, ou simplement exécuté sans compilation depuis SciTE ?
Un programme CUI doit être compilé pour fonctionner comme prévu.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
GMH
Niveau 6
Niveau 6
Messages : 227
Enregistré le : dim. 24 juin 2012 14:56
Status : Hors ligne

Re: [R] ConsoleWrite avec accents

#6

Message par GMH »

Mon résultat est sans compilation depuis SciTE. Cela explique donc mon résultat.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] ConsoleWrite avec accents

#7

Message par jchd »

Dans cette situatiion, la sortie est convertie vers la page de code de console spécifiée dans SciTE4AutoIt3, ici UTF8.

Ceci dit, petite précision pour la code ci-dessus : j'ai mis "en dur" la page de code 850, mais d'aurais dû aller chercher cete valeur dans le registre pour faire propre et portable. Ce détail est laissé à titre d'exercice.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
jpascal
Niveau 6
Niveau 6
Messages : 239
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [R] ConsoleWrite avec accents

#8

Message par jpascal »

Bonjour,

Je viens de lancer le script et il m'affiche termin‚ au lieu de terminé.

Le problème vient-il du code 850 ? SI oui, dans quelle clé de registre puis-je récupérer le bon code ?
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] ConsoleWrite avec accents

#9

Message par jchd »

Que renvoie chcp ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
jpascal
Niveau 6
Niveau 6
Messages : 239
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [R] ConsoleWrite avec accents

#10

Message par jpascal »

Le code 850
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [R] ConsoleWrite avec accents

#11

Message par jchd »

Alors je vois mal le problème.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
jpascal
Niveau 6
Niveau 6
Messages : 239
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [R] ConsoleWrite avec accents

#12

Message par jpascal »

Je commence à comprendre.

Le fichier contenant mon script est encodé en ANSI.

Si je créé un fichier encodé en UTF8, cette fois-ci j'obtiens :
Image
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
jpascal
Niveau 6
Niveau 6
Messages : 239
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [R] ConsoleWrite avec accents

#13

Message par jpascal »

Au temps pour moi. J'ai zappé ton information concernant la compilation du script.
AutoIt 3.3.16.1 - AutoIt3Wrapper 21.316.1639.1
Répondre