Langage non-unicode [Résolu]

Messages postés
99
Date d'inscription
vendredi 25 avril 2003
Dernière intervention
14 février 2011
- - Dernière réponse : ShareVB
Messages postés
2717
Date d'inscription
vendredi 28 juin 2002
Dernière intervention
13 janvier 2016
- 26 oct. 2007 à 16:44
Bonjour,
je suis entrain de faire une petit application de conversion de fichier texte unicode vers ansi.
Bien qu'il y ait plein de demo, je n'ai pas trouvé quelque chose qui fonctionne bien.
La méthode qui me parait la meilleure est de lire le fichier unicode et de l'enregistre directement en ansi en mettant le paramettre windows de reconnaissance des caractère non unicode des otions régionale à la langue voulue.
Cependant, j'aimerai automatiser le changement du paramètre windows ce trouvant de les options avancée des options régionale.
Mais, je n'ai aucune idée de la manière que je dois utiliser pour faire cela.

Quelqu'un peut m'aider ?

Deux choses sont infinies : l'univers et la bêtise humaine.
Mais en ce qui concerne l'univers, je n'en ai pas encore acquis la cetitude absolue.

Albert Einstein<!--
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
2717
Date d'inscription
vendredi 28 juin 2002
Dernière intervention
13 janvier 2016
3
Merci
salut,

si tu fais un truc dans ce genre là :

CultureInfo ci2 = new CultureInfo("zh-CN");

Encoding enc2 = Encoding.GetEncoding(ci2.TextInfo.ANSICodePage);

tu vas récupérer un Encoding ansi de la langue

ou alors directement Encoding.GetEncoding avec le numéro de code page de ton ansi russe/grec ou arabe...

ShareVB

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de ShareVB
Messages postés
135
Date d'inscription
dimanche 1 octobre 2006
Dernière intervention
19 mai 2008
0
Merci
Bonjour,

Je sais que tu peux modifier le séparateur décimal définit dans les options régionales à l'aide de l'appel d'une fonction de la dll système kernel32. Tu trouveras peut-être ton bonheur de ce côté là... Je n'en sais pas plus.
Après les options régionnales ne sont rien d'autres que des clé de registres, il faudrait alors trouver les bonnes et de les modifier via C#.

Cordialement,

Bidou_01
Commenter la réponse de bidou_01
Messages postés
2717
Date d'inscription
vendredi 28 juin 2002
Dernière intervention
13 janvier 2016
0
Merci
salut,

le simple fait d'utiliser StreamReader et StreamWriter avec son paramètre Encoding ne marche pas ?

ShareVB
Commenter la réponse de ShareVB
Messages postés
99
Date d'inscription
vendredi 25 avril 2003
Dernière intervention
14 février 2011
0
Merci
Bonjour à Bidou_01 et ShareVB et au autre,

pour changer la décimal, il est plus simple d'utiliser "CultureInfo" (Tu mémorise la culture courante, tu la change pour ton prog et tu la rétablie avant de fermer le programme).

Et en ce qui concerne le StreamReader et StreamWriter, ma réponse est oui et non.
Explication :
    oui : cela permet de changer l'encoding et donc de passer de Unicode à ANSI.
    non : cette méthode ne convertie pas les caractères arabes, grec ou russe. Dès que les caractères n'est pas de tipe latin cela ne fonctionne pas, il en est de même pour les accents.

mais si on indique à windows d'utiliser le cirylique (caratère russe et autre) pour les programme non-unicode, alors là je peux convertir de unicode à ansi avec un streamwriter. mais je ne sais pas commant changer ce paramètre depuis mon application.

Deux choses sont infinies : l'univers et la bêtise humaine.
Mais en ce qui concerne l'univers, je n'en ai pas encore acquis la cetitude absolue.

Albert Einstein<!--
Commenter la réponse de winny68
Messages postés
99
Date d'inscription
vendredi 25 avril 2003
Dernière intervention
14 février 2011
0
Merci
Bravo ShareVB,

c'est exactement ce que je cherche. Maintenant, il ne me reste pluqu'à trouver une manière de détecter la langue du fichier pour le rendre autonome. Mais c'est déjà un grand pas de fait.

Merci.
Deux choses sont infinies : l'univers et la bêtise humaine.
Mais en ce qui concerne l'univers, je n'en ai pas encore acquis la cetitude absolue.

Albert Einstein<!--
Commenter la réponse de winny68
Messages postés
2717
Date d'inscription
vendredi 28 juin 2002
Dernière intervention
13 janvier 2016
0
Merci
salut,

normalement, le StreamReader détecte l'encoding entre UTF-8 et ansi. Un fichier UTF-8 commence par deux octets qui ne sont pas des caractères du texte...par contre, je ne pense pas qu'il soit possible de savoir dans quel code page se trouve un ANSI parce que par définition, un octet est un octet...c'est l'humain qui sait si ca a un sens ou pas...

ShareVB
Commenter la réponse de ShareVB

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.