Question [RESOLU] Problème d'encodage

Plus d'informations
il y a 14 ans 2 mois #10799 par Thierry
Bonjour à tous,

je sais que le problème a déjà été traité sur ce forum mais les recherches que j'ai effectuées ici et sur le web ne m'ont pas permis d'avancer...

Le principe :

J'utilise un script PS pour automatiser l'utilisation de \"sqlite.exe\" pour afficher le contenu d'une table présente dans une base SQLITE.

Plus précisément la sortie générée par \"sqlite.exe\" est stockée dans une variable puis je renvoie cette variable vers un fichier HTML qui me permet d’afficher le résultat dans Firefox.

Le problème c'est que la page HTML affiche mal les caractères accentués...

Détails :

La base sqlite stocke les données au format UTF-8 (commande \"pragma encoding;\")
Le fichier HTML en sortie semble être lui aussi au format UTF-8 (Firefox-Affichage-Encodage des caractères...)

Je pense fortement que le problème vient du lancement de la commande \"sqlite\" via \"Invoke-expression\" et de l'affectation à une variable et qu'à cette occasion l'encodage change (UTF-16 ?) mais je n'arrive pas à prouver mon sentiment et encore moins à contourner cette difficulté.


Code :

[code:1]

$file = @(Invoke-Expression \" &'CHEMIN_SQLITE.EXE' -html -header \"\"$(CHEMIN_FICHIER_BASE_SQLITE)\"\" 'SELECT * FROM pages_content ORDER BY docid' \" )

out-file -inputobject $file -encoding \"UTF8\" -filePath CHEMIN_FICHIER_HTML


[/code:1]

J'ai essayé de modifier la variabale $outputencoding mais cela ne semble pas marcher...

Rien de bien compliqué en soit mais cela pose problème si je fais une recherche par mots clés sur le fichier ou autre...

Merci de votre aide.

Thierry

Message édité par: thierry92, à: 21/12/11 13:42

Message édité par: thierry92, à: 21/12/11 13:45<br><br>Message édité par: thierry92, à: 26/12/11 12:34

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 2 mois #10803 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Problème d'encodage
Bonjour Thierry,

Que donne l'affichage du resultat dans la console PowerShell ?

As-tu essaye d'autre formats d'encodage, tel que UTF-16 ? Ou ANSI (valeur 'Default' du parametre -encoding) ?

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 2 mois #10820 par Thierry
Réponse de Thierry sur le sujet Re:Problème d'encodage
Bonjour et merci pour ton aide,


J'ai effectué des tests avec toutes les valeurs possibles du paramètres \&quot;-encoding\&quot; mais rien n'y fait.

J'ai également tenté de changer la variable $outputenconding mais rien n'y fait (j'ai peut être mal fait...). J'ai essayé ceci :
[code:1]$OutputEncoding = [Console]::OutputEncoding[/code:1] et le codepage
devient :

[code:1]IsSingleByte : True
BodyName : ibm850
EncodingName : Europe de l'Ouest (DOS)
HeaderName : ibm850
WebName : ibm850
WindowsCodePage : 1252
IsBrowserDisplay : False
IsBrowserSave : False
IsMailNewsDisplay : False
IsMailNewsSave : False
EncoderFallback : System.Text.InternalEncoderBestFitFallback
DecoderFallback : System.Text.InternalDecoderBestFitFallback
IsReadOnly : True
CodePage : 850
[/code:1]



Si je lance les commandes sqlite directement dans la console le pb reste présent peu importe que j'utilise \&quot;sqlite.exe\&quot; directement ou que je le lance via \&quot;start-process\&quot; ou \&quot;invoke-expression\&quot;

Merci :)

Thierry

Je viens de me rendre compte que dans une console PS si je tape :
[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8

l'affichage avec start-process est parfait... j'ai pas trop compris pourquoi mais je cherche et j'essaye d'appliquer la solution à mon script....m'enfin c'est pas gagné vu que je n'identifie pas vraiment le pb et la solution ! (Rq : après cette manip la variable $outputencoding n'a pas changée visiblement)

Message édité par: thierry92, à: 23/12/11 13:24

Message édité par: thierry92, à: 23/12/11 13:38<br><br>Message édité par: thierry92, à: 23/12/11 13:40

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 2 mois #10821 par Thierry
Réponse de Thierry sur le sujet Re:Problème d'encodage
Bonjour,

a priori j'ai une solution fonctionnelle qui consiste à ajouter
[code:1][System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8[/code:1]
au début du script.

Après cela je n'ai plus de pb dans les fichiers HTML restitués.

Pour autant cette solution me pose deux questions :

1- Je ne sais pas du tout ce que j'ai fait pour que cela marche ! (c'est embêtant ;) )

2- Mon script génère des erreurs de ce type :
[code:1]Write-Host : L'erreur interne Win32 « Un périphérique attaché au système ne fon
ctionne pas correctement » 0x1F s'est produite lors de l'écriture du tampon de
sortie de la console à la position actuelle du curseur. Contactez les services
de support technique Microsoft.
Au niveau de D:\Informatique\Programmation\Powershell\Scripts\Xtract\Xtract-dev
\scripts\Chrome.ps1 : 2685 Caractère : 11
+ write-host &lt;&lt;&lt;&lt; -foreground red \&quot;`n-&gt; Rapports générés.\&quot;
+ CategoryInfo : WriteError: (:«») [Write-Host], HostException
+ FullyQualifiedErrorId : WriteConsole,Microsoft.PowerShell.Commands.Write
HostCommand[/code:1]

Je pense que du fait de la manipulation l'usage de caractères accentués via Write-host fait bugger la console...

Je vais chercher de mon côté mais si vous avez des idées ou une explication je suis preneur.

Bonne fêtes à tous !

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 2 mois #10822 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Problème d'encodage
Salut,
thierry92 écrit:

a priori j'ai une solution fonctionnelle qui consiste à ajouter
[code:1]
[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8
[/code:1]
au début du script.

Sous Seven 32 bits Fr, une fois configuré OutputEncoding de la sorte, un appel à Dir crash la console :huh:

Si qq peut tester avec une installation US.
thierry92 écrit:

Bonne fêtes à tous !

Merci à toi aussi.<br><br>Message édité par: Laurent Dardenne, à: 23/12/11 14:25

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 2 mois #10823 par Thierry
Réponse de Thierry sur le sujet Re:Problème d'encodage
Bonjour et merci pour ton aide.


Personnellement j'utilise une version Seven 64 bits.
Je vais tenter de trouver une version 32bits.

Merci.

Thierry

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.065 secondes
Propulsé par Kunena