Page 1 sur 1
[R] ConsoleWrite avec accents
Posté : mer. 06 juil. 2016 12:20
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
[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
Re: [..] ConsoleWrite avec accents
Posté : mer. 06 juil. 2016 17:28
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
Re: [R] ConsoleWrite avec accents
Posté : mer. 06 juil. 2016 19:33
par jlf
Merci !
Je pense que j'aurai pu chercher très très longtemps....
Re: [R] ConsoleWrite avec accents
Posté : sam. 09 juil. 2016 19:41
par GMH
Moi j'obtiens ça :
termin‚ : €Â‚ƒ„…†‡ˆ‰Š‹ŒÂŽÂ‘’“â€â€¢â€“—˜™š›œÂžŸ ¡¢£¤¥¦§¨©ª«¬Â®¯µ¶·¸½ÆÇÃÑÒÓÔiÖרÞà áâãäåæçèéêëìÃñ=óôõöøúûýü
Re: [R] ConsoleWrite avec accents
Posté : dim. 10 juil. 2016 01:25
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.
Re: [R] ConsoleWrite avec accents
Posté : dim. 10 juil. 2016 08:26
par GMH
Mon résultat est sans compilation depuis SciTE. Cela explique donc mon résultat.
Re: [R] ConsoleWrite avec accents
Posté : dim. 10 juil. 2016 11:45
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.
Re: [R] ConsoleWrite avec accents
Posté : mer. 23 nov. 2016 10:45
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 ?
Re: [R] ConsoleWrite avec accents
Posté : mer. 23 nov. 2016 11:17
par jchd
Que renvoie chcp ?
Re: [R] ConsoleWrite avec accents
Posté : mer. 23 nov. 2016 12:08
par jpascal
Le code 850
Re: [R] ConsoleWrite avec accents
Posté : mer. 23 nov. 2016 14:57
par jchd
Alors je vois mal le problème.
Re: [R] ConsoleWrite avec accents
Posté : mer. 23 nov. 2016 15:56
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 :

Re: [R] ConsoleWrite avec accents
Posté : mer. 23 nov. 2016 19:17
par jpascal
Au temps pour moi. J'ai zappé ton information concernant la compilation du script.