Bonjour,
Avec la commande Process.start(), j'exécute un commande DOS dont je
récupère
le resultat dans une chaine avec Process.StandardOutput.ReadToEnd().
La chaine resultat contient, par exemple, des caractères accentués
dans le
DOS, mais illisibles dans mon application Windows.
Par quel moyen puis-je convertir cette chaine de caractères DOS en
chaine de
caractères lisibles sous windows ?
Bonjour,
Avec la commande Process.start(), j'exécute un commande DOS dont je
récupère
le resultat dans une chaine avec Process.StandardOutput.ReadToEnd().
La chaine resultat contient, par exemple, des caractères accentués
dans le
DOS, mais illisibles dans mon application Windows.
Par quel moyen puis-je convertir cette chaine de caractères DOS en
chaine de
caractères lisibles sous windows ?
Bonjour,
Avec la commande Process.start(), j'exécute un commande DOS dont je
récupère
le resultat dans une chaine avec Process.StandardOutput.ReadToEnd().
La chaine resultat contient, par exemple, des caractères accentués
dans le
DOS, mais illisibles dans mon application Windows.
Par quel moyen puis-je convertir cette chaine de caractères DOS en
chaine de
caractères lisibles sous windows ?
"Luis" a écrit dans le message de
news:
> Bonjour,
Bonjour,
> Avec la commande Process.start(), j'exécute un commande DOS dont je
> récupère
> le resultat dans une chaine avec Process.StandardOutput.ReadToEnd().
> La chaine resultat contient, par exemple, des caractères accentués
> dans le
> DOS, mais illisibles dans mon application Windows.
>
> Par quel moyen puis-je convertir cette chaine de caractères DOS en
> chaine de
> caractères lisibles sous windows ?
Le mieux est de démarrer le process en lui affectant un objet
ProcessStartInfo dans lequel on précise la propriété
StandardOutputEncoding.
Sinon, sur un système Français, l'encodage à utiliser est généralement
OEM 850
System.Text.Encoding.GetEncoding(850)
--
Fred
"Luis" <luis-manuel.lopes@orange.fr> a écrit dans le message de
news:780823B2-3092-40DC-80E2-539158BFBFAD@microsoft.com...
> Bonjour,
Bonjour,
> Avec la commande Process.start(), j'exécute un commande DOS dont je
> récupère
> le resultat dans une chaine avec Process.StandardOutput.ReadToEnd().
> La chaine resultat contient, par exemple, des caractères accentués
> dans le
> DOS, mais illisibles dans mon application Windows.
>
> Par quel moyen puis-je convertir cette chaine de caractères DOS en
> chaine de
> caractères lisibles sous windows ?
Le mieux est de démarrer le process en lui affectant un objet
ProcessStartInfo dans lequel on précise la propriété
StandardOutputEncoding.
Sinon, sur un système Français, l'encodage à utiliser est généralement
OEM 850
System.Text.Encoding.GetEncoding(850)
--
Fred
foleide@free.fr
"Luis" a écrit dans le message de
news:
> Bonjour,
Bonjour,
> Avec la commande Process.start(), j'exécute un commande DOS dont je
> récupère
> le resultat dans une chaine avec Process.StandardOutput.ReadToEnd().
> La chaine resultat contient, par exemple, des caractères accentués
> dans le
> DOS, mais illisibles dans mon application Windows.
>
> Par quel moyen puis-je convertir cette chaine de caractères DOS en
> chaine de
> caractères lisibles sous windows ?
Le mieux est de démarrer le process en lui affectant un objet
ProcessStartInfo dans lequel on précise la propriété
StandardOutputEncoding.
Sinon, sur un système Français, l'encodage à utiliser est généralement
OEM 850
System.Text.Encoding.GetEncoding(850)
--
Fred
Merci Fred pour ces renseignements.
Le Codage pour windows est aussi le "Windows-1252".
J'ai fait des essais de convertion du retour de la commande DOS, de OEM850
vers Windows-1252, sans succès.
Je viens d'essayer ton conseil, a savoir d'utiliser la propriété
StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas
compte de ce paramètre.
Merci Fred pour ces renseignements.
Le Codage pour windows est aussi le "Windows-1252".
J'ai fait des essais de convertion du retour de la commande DOS, de OEM850
vers Windows-1252, sans succès.
Je viens d'essayer ton conseil, a savoir d'utiliser la propriété
StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas
compte de ce paramètre.
Merci Fred pour ces renseignements.
Le Codage pour windows est aussi le "Windows-1252".
J'ai fait des essais de convertion du retour de la commande DOS, de OEM850
vers Windows-1252, sans succès.
Je viens d'essayer ton conseil, a savoir d'utiliser la propriété
StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas
compte de ce paramètre.
On Sun, 16 Mar 2008 00:25:00 -0700, Luis wrote:
>Merci Fred pour ces renseignements.
>Le Codage pour windows est aussi le "Windows-1252".
>
>J'ai fait des essais de convertion du retour de la commande DOS, de OEM850
>vers Windows-1252, sans succès.
>Je viens d'essayer ton conseil, a savoir d'utiliser la propriété
>StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas
>compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères
accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main()
{
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
// startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
Encoding OEMEncoding = Encoding.GetEncoding(850);
byte[] theBytes = OEMEncoding.GetBytes(output);
byte[] convertedBytes = Encoding.Convert(OEMEncoding,
Encoding.Default, theBytes);
string convertedOutput = Encoding.Default.GetString(convertedBytes);
Console.WriteLine(convertedOutput);
Console.ReadKey();
}
}
Amicalement,
Gilles.
Regards,
Gilles [MVP].
(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
On Sun, 16 Mar 2008 00:25:00 -0700, Luis <luis-manuel.lopes@orange.fr> wrote:
>Merci Fred pour ces renseignements.
>Le Codage pour windows est aussi le "Windows-1252".
>
>J'ai fait des essais de convertion du retour de la commande DOS, de OEM850
>vers Windows-1252, sans succès.
>Je viens d'essayer ton conseil, a savoir d'utiliser la propriété
>StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas
>compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères
accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main()
{
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
// startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
Encoding OEMEncoding = Encoding.GetEncoding(850);
byte[] theBytes = OEMEncoding.GetBytes(output);
byte[] convertedBytes = Encoding.Convert(OEMEncoding,
Encoding.Default, theBytes);
string convertedOutput = Encoding.Default.GetString(convertedBytes);
Console.WriteLine(convertedOutput);
Console.ReadKey();
}
}
Amicalement,
Gilles.
Regards,
Gilles [MVP].
(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
On Sun, 16 Mar 2008 00:25:00 -0700, Luis wrote:
>Merci Fred pour ces renseignements.
>Le Codage pour windows est aussi le "Windows-1252".
>
>J'ai fait des essais de convertion du retour de la commande DOS, de OEM850
>vers Windows-1252, sans succès.
>Je viens d'essayer ton conseil, a savoir d'utiliser la propriété
>StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas
>compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères
accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main()
{
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
// startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
Encoding OEMEncoding = Encoding.GetEncoding(850);
byte[] theBytes = OEMEncoding.GetBytes(output);
byte[] convertedBytes = Encoding.Convert(OEMEncoding,
Encoding.Default, theBytes);
string convertedOutput = Encoding.Default.GetString(convertedBytes);
Console.WriteLine(convertedOutput);
Console.ReadKey();
}
}
Amicalement,
Gilles.
Regards,
Gilles [MVP].
(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
On Sun, 16 Mar 2008 00:25:00 -0700, Luis wrote:
>Merci Fred pour ces renseignements.
>Le Codage pour windows est aussi le "Windows-1252".
>
>J'ai fait des essais de convertion du retour de la commande DOS, de OEM850
>vers Windows-1252, sans succès.
>Je viens d'essayer ton conseil, a savoir d'utiliser la propriété
>StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas
>compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères
accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main()
{
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
// startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
Encoding OEMEncoding = Encoding.GetEncoding(850);
byte[] theBytes = OEMEncoding.GetBytes(output);
byte[] convertedBytes = Encoding.Convert(OEMEncoding,
Encoding.Default, theBytes);
string convertedOutput = Encoding.Default.GetString(convertedBytes);
Console.WriteLine(convertedOutput);
Console.ReadKey();
}
}
Amicalement,
Gilles.
Regards,
Gilles [MVP].
(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
On Sun, 16 Mar 2008 00:25:00 -0700, Luis <luis-manuel.lopes@orange.fr> wrote:
>Merci Fred pour ces renseignements.
>Le Codage pour windows est aussi le "Windows-1252".
>
>J'ai fait des essais de convertion du retour de la commande DOS, de OEM850
>vers Windows-1252, sans succès.
>Je viens d'essayer ton conseil, a savoir d'utiliser la propriété
>StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas
>compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères
accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main()
{
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
// startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
Encoding OEMEncoding = Encoding.GetEncoding(850);
byte[] theBytes = OEMEncoding.GetBytes(output);
byte[] convertedBytes = Encoding.Convert(OEMEncoding,
Encoding.Default, theBytes);
string convertedOutput = Encoding.Default.GetString(convertedBytes);
Console.WriteLine(convertedOutput);
Console.ReadKey();
}
}
Amicalement,
Gilles.
Regards,
Gilles [MVP].
(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
On Sun, 16 Mar 2008 00:25:00 -0700, Luis wrote:
>Merci Fred pour ces renseignements.
>Le Codage pour windows est aussi le "Windows-1252".
>
>J'ai fait des essais de convertion du retour de la commande DOS, de OEM850
>vers Windows-1252, sans succès.
>Je viens d'essayer ton conseil, a savoir d'utiliser la propriété
>StandardOutputEncoding=Encoding.GetEncoding(1252) mais le DOS ne tient pas
>compte de ce paramètre.
Cela fonctionne pour moi de la facon suivante:
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
(echotext.bat a été crée sous DOS, et contient/écrit des charactères
accentués.)
La chaine "output" est bien lisible.
Ce qui semble marcher aussi est ceci:
static void Main()
{
ProcessStartInfo startInfo = new
ProcessStartInfo(@"c:tmpechotext.bat");
// startInfo.StandardOutputEncoding = Encoding.Default;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
Process p = Process.Start(startInfo);
string output = p.StandardOutput.ReadToEnd();
Encoding OEMEncoding = Encoding.GetEncoding(850);
byte[] theBytes = OEMEncoding.GetBytes(output);
byte[] convertedBytes = Encoding.Convert(OEMEncoding,
Encoding.Default, theBytes);
string convertedOutput = Encoding.Default.GetString(convertedBytes);
Console.WriteLine(convertedOutput);
Console.ReadKey();
}
}
Amicalement,
Gilles.
Regards,
Gilles [MVP].
(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
"Fred" wrote:"Luis" a écrit dans le message de
news:
Le Codage pour windows est aussi le "Windows-1252".
J'ai fait des essais de convertion du retour de la commande DOS, de
OEM850
vers Windows-1252, sans succès.
"Fred" wrote:
"Luis" <luis-manuel.lopes@orange.fr> a écrit dans le message de
news:780823B2-3092-40DC-80E2-539158BFBFAD@microsoft.com...
Le Codage pour windows est aussi le "Windows-1252".
J'ai fait des essais de convertion du retour de la commande DOS, de
OEM850
vers Windows-1252, sans succès.
"Fred" wrote:"Luis" a écrit dans le message de
news:
Le Codage pour windows est aussi le "Windows-1252".
J'ai fait des essais de convertion du retour de la commande DOS, de
OEM850
vers Windows-1252, sans succès.
"Luis" a écrit dans le message de
news:
> "Fred" wrote:
>
>> "Luis" a écrit dans le message de
>> news:
> Le Codage pour windows est aussi le "Windows-1252".
Oui mais la console de commande est par défaut en OEM 850 sauf si tu
fais un CHCP.
> J'ai fait des essais de convertion du retour de la commande DOS, de
> OEM850
> vers Windows-1252, sans succès.
Voilà un bout de code fait rapidement en VB et qui fonctionne.
p = New Process
psi = New ProcessStartInfo("mountvol.exe")
psi.StandardOutputEncoding =
System.Text.Encoding.GetEncoding(850)
psi.RedirectStandardOutput = True
psi.UseShellExecute = False
p.StartInfo = psi
p.Start()
Dim s As String = p.StandardOutput.ReadToEnd
Me.TextBox1.Text = s
--
Fred
"Luis" <luis-manuel.lopes@orange.fr> a écrit dans le message de
news:DD25AC85-24B3-467C-ADD8-B4B562F7080E@microsoft.com...
> "Fred" wrote:
>
>> "Luis" <luis-manuel.lopes@orange.fr> a écrit dans le message de
>> news:780823B2-3092-40DC-80E2-539158BFBFAD@microsoft.com...
> Le Codage pour windows est aussi le "Windows-1252".
Oui mais la console de commande est par défaut en OEM 850 sauf si tu
fais un CHCP.
> J'ai fait des essais de convertion du retour de la commande DOS, de
> OEM850
> vers Windows-1252, sans succès.
Voilà un bout de code fait rapidement en VB et qui fonctionne.
p = New Process
psi = New ProcessStartInfo("mountvol.exe")
psi.StandardOutputEncoding =
System.Text.Encoding.GetEncoding(850)
psi.RedirectStandardOutput = True
psi.UseShellExecute = False
p.StartInfo = psi
p.Start()
Dim s As String = p.StandardOutput.ReadToEnd
Me.TextBox1.Text = s
--
Fred
foleide@free.fr
"Luis" a écrit dans le message de
news:
> "Fred" wrote:
>
>> "Luis" a écrit dans le message de
>> news:
> Le Codage pour windows est aussi le "Windows-1252".
Oui mais la console de commande est par défaut en OEM 850 sauf si tu
fais un CHCP.
> J'ai fait des essais de convertion du retour de la commande DOS, de
> OEM850
> vers Windows-1252, sans succès.
Voilà un bout de code fait rapidement en VB et qui fonctionne.
p = New Process
psi = New ProcessStartInfo("mountvol.exe")
psi.StandardOutputEncoding =
System.Text.Encoding.GetEncoding(850)
psi.RedirectStandardOutput = True
psi.UseShellExecute = False
p.StartInfo = psi
p.Start()
Dim s As String = p.StandardOutput.ReadToEnd
Me.TextBox1.Text = s
--
Fred