Langage non-unicode [Résolu]

winny68 99 Messages postés vendredi 25 avril 2003Date d'inscription 14 février 2011 Dernière intervention - 12 oct. 2007 à 15:24 - Dernière réponse : ShareVB 2717 Messages postés vendredi 28 juin 2002Date d'inscription 13 janvier 2016 Dernière intervention
- 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
ShareVB 2717 Messages postés vendredi 28 juin 2002Date d'inscription 13 janvier 2016 Dernière intervention - 24 oct. 2007 à 09:51
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

Merci ShareVB 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de ShareVB
bidou_01 135 Messages postés dimanche 1 octobre 2006Date d'inscription 19 mai 2008 Dernière intervention - 13 oct. 2007 à 10:05
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
ShareVB 2717 Messages postés vendredi 28 juin 2002Date d'inscription 13 janvier 2016 Dernière intervention - 16 oct. 2007 à 12:20
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
winny68 99 Messages postés vendredi 25 avril 2003Date d'inscription 14 février 2011 Dernière intervention - 23 oct. 2007 à 11:03
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
winny68 99 Messages postés vendredi 25 avril 2003Date d'inscription 14 février 2011 Dernière intervention - 26 oct. 2007 à 16:28
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
ShareVB 2717 Messages postés vendredi 28 juin 2002Date d'inscription 13 janvier 2016 Dernière intervention - 26 oct. 2007 à 16:44
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.