Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Conversion de fichiers texte OEM vers ANSI | |
| | Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Conversion de fichiers texte OEM vers ANSI Ven 17 Avr 2015 - 0:48 | |
| Tout est dans le code. - Code:
-
rem ============================================================================ rem Conversion de fichiers texte OEM vers ANSI rem OEM2ANSI.bas rem Par Papydall rem ============================================================================ rem OEM : Original Equipment Manufacturer rem ANSI : American National Standards Institute
rem Windows ne garde pas en mémoire une, mais deux pages de code courantes : rem Une utilisée dans la console, une pour les applications graphiques. rem La page de code utilisée pour la console est appelée la page de code OEM rem courante. rem Il s agit généralement, selon la région, de la page 437 ou 850. rem La page de code utilisée pour les applications graphiques est appelée la rem page de code ANSI courante. rem En Occident, il s agit généralement de la page de code 1252.
rem Cette différence se voit généralement quand on tente d afficher des rem caractères accentués dans une application console.
rem Ceci a pour effet un défaut d affichage des caractères accentués lorsqu on rem affiche avec le Bloc-Notes (Notepad.exe), ou Wordpad (Wordpad.exe), rem le résultat d une redirection d une commande vers un fichier texte. rem ============================================================================ rem La SUB oem2ansi(source$,destination$) rem converti un fichier texte OEM vers un fichier texte ANSI. rem Syntaxe : oem2ansi(source$,destination$) rem source$ : fichier source (texte OEM) rem destination$ : fichier destination (texte ANSI) rem ============================================================================ rem Pour tester oem2ansi,on va créer un fichier OEM puis on le convertira en ANSI. rem Comme exemple : on va générer un fichier texte par la ligne de commande. rem Ce fichier texte contient l aide d utilisation de la commande DIR. rem Il est en code OEM puisque généré à partir de la console. rem On choisira une sortie sur le bloc-notes ou dans un FORM rem ============================================================================ label choix dim rep$ : rep$ = dir_current$+"/" dim fich_OEM$ : fich_OEM$ = rep$ + "TextOEM.txt" dim fich_ANSI$ : fich_ANSI$ = rep$ + "TextANSI.txt" dim note$ : note$ = "C:\Windows\System32\notepad.exe" top 0,200 : left 0,500 : width 0,300 : height 0,200 caption 0, "OEM vers ANSI" form 3 : full_space 3 : font_bold 3 : font_size 3,10 : font_color 3, 0,0,255 : hide 3 caption 3,"Remarquez la différence de codage OEM / ANSI" list 4 : parent 4,3 : top 4,20 : left 4,50 : width 4, width(3)/2-50 : height 4,height(3)-100 list 5 : parent 5,3 : top 5,20 : left 5,width(4)+60 : width 5, width(3)/2-50 : height 5,height(3)-100
option 1 :width 1,200 : caption 1,"Sortie vers le bloc-notes" : on_click 1,choix option 2 :width 2,200 : caption 2,"Sortie sur le FORM Panoramic" : on_click 2,choix : top 2,20 button 9 : top 9,80 : left 9,50 : caption 9,"quit" : on_click 9,choix font_bold 1 : font_bold 2 : font_bold 9
' Création d'un fichier texte codé en OEM execute_wait "cmd /c dir /? > " + fich_OEM$ ' Conversion du texte OEM vers ANSI OEM2ANSI(fich_OEM$,fich_ANSI$)
end rem ============================================================================ choix: select number_click case 1 : Vers_Notepad() case 2 : Vers_Form() case 9 : terminate end_select return rem ============================================================================ ' Sortie des fichiers sur le bloc-notes SUB Vers_Notepad() hide 3 execute_wait note$ + " " + fich_OEM$ execute_wait note$ + " " + fich_ANSI$ END_SUB rem ============================================================================ ' Sortie des fichiers sur FORM SUB Vers_Form() dim_local a$ show 3 item_add 4,"Fichier : texte codé OEM" : item_add 4,"=======================" file_open_read 10,fich_OEM$ while file_eof(10) <> 1 : file_readln 10,a$ : item_add 4, a$ : end_while file_close 10
item_add 5,"Fichier : texte codé ANSI" : item_add 5,"=======================" file_open_read 10,fich_ANSI$ while file_eof(10) <> 1 : file_readln 10,a$ :item_add 5, a$ : end_while file_close 10
END_SUB rem ============================================================================ ' Conversion de fichier codé en OEM vers un fichier codé en ANSI SUB oem2ansi(source$,destination$) DIM_LOCAL oem$(16*16),oldline$, newline$, entree, sortie, oldc, newc, i entree = 1 : sortie = 2 IF FILE_EXISTS(source$) = 0 MESSAGE "Le fichier : " + source$ + " est introuvable !!!" + chr$(13) + "Veuillez vérifier son nom ..." TERMINATE END_IF RESTORE FOR i = 0 to 255 : READ oem$(i) : NEXT i FILE_OPEN_READ entree,source$ FILE_OPEN_WRITE sortie,destination$ WHILE FILE_EOF(entree) <> 1 file_readln entree,oldline$ : newline$ = "" for i = 1 to len(oldline$) oldc = asc(mid$(oldline$,i,1)) newc = HEX(oem$(oldc)) newline$ = newline$ + chr$(newc) next i FILE_WRITELN sortie,newline$ END_WHILE FILE_CLOSe entree : FILE_CLOSE sortie
END_SUB rem ============================================================================
DATA "00","01","02","03","04","05","06","07","08","09","0A","0B","0C","0D","0E","0F" DATA "10","11","12","13","14","15","16","17","18","19","1A","1B","1C","1D","1E","1F" DATA "20","21","22","23","24","25","26","27","28","29","2A","2B","2C","2D","2E","2F" DATA "30","31","32","33","34","35","36","37","38","39","3A","3B","3C","3D","3E","3F" DATA "40","41","42","43","44","45","46","47","48","49","4A","4B","4C","4D","4E","4F" DATA "50","51","52","53","54","55","56","57","58","59","5A","5B","5C","5D","5E","5F" DATA "60","61","62","63","64","65","66","67","68","69","6A","6B","6C","6D","6E","6F" DATA "70","71","72","73","74","75","76","77","78","79","7A","7B","7C","7D","7E","7F" DATA "C7","FC","E9","E2","E4","E0","E5","E7","EA","EB","E8","EF","EE","EC","C4","C5" DATA "C9","E6","C6","F4","F6","F2","FB","F9","FF","D6","DC","F8","A3","D8","D7","83" DATA "E1","ED","F3","FA","F1","D1","AA","BA","BF","AE","AC","BD","BC","A1","AB","BB" DATA "A6","A6","A6","A6","A6","C1","C2","C0","A9","A6","A6","2B","2B","A2","A5","2B" DATA "2B","2D","2D","2B","2D","2B","E3","C3","2B","2B","2D","2D","A6","2D","2B","A4" DATA "F0","D0","CA","CB","C8","69","CD","CE","CF","2B","2B","A6","5F","A6","CC","AF" DATA "D3","DF","D4","D2","F5","D5","B5","FE","DE","DA","DB","D9","FD","DD","AF","B4" DATA "AD","B1","3D","BE","B6","A7","F7","B8","B0","A8","B7","B9","B3","B2","A6","A0" rem ============================================================================
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Conversion de fichiers texte OEM vers ANSI Ven 17 Avr 2015 - 4:45 | |
| Si ça peut intéresser quelqu’un, c’est tant mieux , sinon tant pis pour le temps perdu ! - Code:
-
rem ============================================================================ rem Conversion de fichier rem OEM vers UNICODE rem UNICODE vers ANSI rem ============================================================================
dim rep$ : rep$ = dir_current$ + "" dim OEMfich$ : OEMfich$ = rep$ + "HelpDirOEM.txt" dim ANSIfich$ : ANSIfich$ = rep$ + "HelpDirANSI.txt" dim UNICODEfich$ : UNICODEfich$ = rep$ + "HelpDirUNICODE.txt" dim note$ : note$ = "C:\Windows\System32\notepad.exe" width 0, 200 : height 0,100 : font_bold 0 : font_size 0,12 : border_hide 0 font_color 0,255,0,0 execute_wait "cmd /c dir /? > " + OEMfich$ : ' Création d'un fichier OEM OEM2Unicode(OEMfich$,UNICODEfich$) : ' Conversion OEM ---> UNICODE Unicode2Ansi(UNICODEfich$,ANSIfich$) : ' Conversion UNICODE ---> ANSI
print " Codage OEM" : execute_wait note$ + " " + OEMfich$ : print print " Codage UNICODE" : execute_wait note$ + " " + UNICODEfich$ : print print " Codage ANSI" : execute_wait note$ + " " + ANSIfich$
file_delete OEMfich$ : file_delete ANSIfich$ : file_Delete UNICODEfich$
terminate
rem ============================================================================ ' Convertir un fichier texte OEM vers un fichier texte UNICODE. ' Une manière simple de convertir un fichier encodé en OEM vers un fichier ' UNICODE est d'utiliser la commande TYPE dans une nouvelle instance de CMD.exe ' avec l'option /U et de rediriger la sortie vers un nouveau fichier SUB OEM2Unicode(OEMfich$,UNICODEfich$) execute_wait "cmd /u /c type " + OEMfich$ + " > " + UNICODEfich$ END_SUB rem ============================================================================ ' Convertir un fichier texte UNICODE vers un fichier texte ANSI. ' Une manière simple de convertir un fichier encodé en UNICODE vers un fichier ' ANSI est d'utiliser la commande TYPE dans une nouvelle instance de CMD.exe ' avec l'option /A et de rediriger la sortie vers un nouveau fichier SUB Unicode2Ansi(UNICODEfich$,ANSIfich$) execute_wait "cmd /a /c type " + UNICODEfich$ + " > " + ANSIfich$ END_SUB rem ============================================================================
Dernière édition par papydall le Sam 18 Avr 2015 - 14:48, édité 1 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Conversion de fichiers texte OEM vers ANSI Ven 17 Avr 2015 - 7:55 | |
| Rassures-toi Papydall, tu n'as pas perdu ton temps. J'ai des fichiers qui ont été produits par des programmes écris en QwickBasic, et ces fichiers sont des fichiers textes OEM. 1) je ne savais pas pourquoi le bloc note m'affichais "mal" ces fichiers, maintenant je sais. 2) j'ai fait un test de ton programme (le premier) et la conversion est parfaite. 3) il me suffit de renommer le fichier "TextANSI.txt" obtenu par le nom du fichier de départ et voilà mon fichier converti. Je prends.... A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Conversion de fichiers texte OEM vers ANSI Ven 17 Avr 2015 - 8:20 | |
| Des procédures a garder sur le site, je pense car ça peut clairement dépanner quand on en a besoin. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Conversion de fichiers texte OEM vers ANSI Ven 17 Avr 2015 - 13:01 | |
| Je suis content | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 17 Avr 2015 - 17:19 | |
| Il n' y a plus qu' à... ...et je les publie ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Conversion de fichiers texte OEM vers ANSI Ven 17 Avr 2015 - 17:56 | |
| Petite remarque en cherchant la petite bête, concernant la sub oem2ansi. Cette sub n'est pas indépendante du contexte du programme utilisateur. En effet, elle contient une série de Datas, qui sont lus après un Restore. Si le programme appelant, ou une autre sub, contient également des Datas, ça va mettre la pagaille. D'autant plus, en regardant de plus près, que ces datas ne sont pas dans le corps de la sub, mais en dehors, et lus par la sub... Dans un cas comme celui-ci, je préconiserais suggérerais (précaution de langage) plutôt que des datas une variable chaîne locale qui contiendrait les mêmes infos et qui elle serait indépendante du reste du programme. Variable intégrée à la sub, ce qui rendrait celle-ci plus transportable. Du genre: - Code:
-
DIM_LOCAL a$ a$ = "000102030405060708090A0B0C0D0E0F" a$=a$+"101112131415161718191A1B1C1D1E1F" a$=a$+"202122232425262728292A2B2C2D2E2F" a$=a$+"303132333435363738393A3B3C3D3E3F" a$=a$+"404142434445464748494A4B4C4D4E4F" a$=a$+"505152535455565758595A5B5C5D5E5F" a$=a$+"606162636465666768696A6B6C6D6E6F" a$=a$+"707172737475767778797A7B7C7D7E7F" a$=a$+"C7FCE9E2E4E0E5E7EAEBE8EFEEECC4C5" a$=a$+"C9E6C6F4F6F2FBF9FFD6DCF8A3D8D783" a$=a$+"E1EDF3FAF1D1AABABFAEACBDBCA1ABBB" a$=a$+"A6A6A6A6A6C1C2C0A9A6A62B2BA2A52B" a$=a$+"2B2D2D2B2D2BE3C32B2B2D2DA62D2BA4" a$=a$+"F0D0CACBC869CDCECF2B2BA65FA6CCAF" a$=a$+"D3DFD4D2F5D5B5FEDEDADBD9FDDDAFB4" a$=a$+"ADB13DBEB6A7F7B8B0A8B7B9B3B2A6A0" et puis garnir la table oem$() avec des Mid$(a$,... ) - Code:
-
FOR i = 0 to 255 : oem$(i) = MID$(a$,i*2+1,2) : NEXT i | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Conversion de fichiers texte OEM vers ANSI Ven 17 Avr 2015 - 20:32 | |
| Comme il y a beaucoup plus d'idées dans deux têtes que dans un seule, et comme JL35 a trouvé la "grosse petite bête" (c'est-à dire la SUB n'était pas indépendante du contexte du programme), je reprends et j'adhère à son idée de donner son indépendance à la SUB. Voilà, SUB OEM2ANSI() je te donne ta liberté, tu es désormais indépendante! Tu peux, respectable SUB, remercier JL35 qui est pour beaucoup pour ton indépendance. - Code:
-
rem ============================================================================ ' Conversion de fichier codé en OEM vers un fichier codé en ANSI SUB oem2ansi(source_OEM$,destination_ANSI$) DIM_LOCAL oem$(16*16),oldline$, newline$, entree, sortie, oldc, newc, i, a$ ' Chargement du tableao oem$() selon l'excellente idée de JL35 a$ = a$ + "000102030405060708090A0B0C0D0E0F" a$ = a$ + "101112131415161718191A1B1C1D1E1F" a$ = a$ + "202122232425262728292A2B2C2D2E2F" a$ = a$ + "303132333435363738393A3B3C3D3E3F" a$ = a$ + "404142434445464748494A4B4C4D4E4F" a$ = a$ + "505152535455565758595A5B5C5D5E5F" a$ = a$ + "606162636465666768696A6B6C6D6E6F" a$ = a$ + "707172737475767778797A7B7C7D7E7F" a$ = a$ + "C7FCE9E2E4E0E5E7EAEBE8EFEEECC4C5" a$ = a$ + "C9E6C6F4F6F2FBF9FFD6DCF8A3D8D783" a$ = a$ + "E1EDF3FAF1D1AABABFAEACBDBCA1ABBB" a$ = a$ + "A6A6A6A6A6C1C2C0A9A6A62B2BA2A52B" a$ = a$ + "2B2D2D2B2D2BE3C32B2B2D2DA62D2BA4" a$ = a$ + "F0D0CACBC869CDCECF2B2BA65FA6CCAF" a$ = a$ + "D3DFD4D2F5D5B5FEDEDADBD9FDDDAFB4" a$ = a$ + "ADB13DBEB6A7F7B8B0A8B7B9B3B2A6A0" FOR i = 0 to 255 : oem$(i) = MID$(a$,i*2+1,2) : NEXT i entree = 1 : sortie = 2 IF FILE_EXISTS(source_OEM$) = 0 MESSAGE "Le fichier : " + source_OEM$ + " est introuvable !!!" + chr$(13) + "Veuillez vérifier son nom ..." TERMINATE END_IF
FILE_OPEN_READ entree,source_OEM$ FILE_OPEN_WRITE sortie,destination_ANSI$ WHILE FILE_EOF(entree) <> 1 file_readln entree,oldline$ : newline$ = "" for i = 1 to len(oldline$) oldc = asc(mid$(oldline$,i,1)) newc = HEX(oem$(oldc)) newline$ = newline$ + chr$(newc) next i FILE_WRITELN sortie,newline$ END_WHILE FILE_CLOSe entree : FILE_CLOSE sortie
END_SUB rem ============================================================================
Vive l'indépendance! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Conversion de fichiers texte OEM vers ANSI Ven 17 Avr 2015 - 21:32 | |
| Je suis pour l'indépendance des subs, mais pas pour leur autodétermination, c'est à dire qu'elles n'en fassent pas qu'à leur tête, quand même ! | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: Conversion de fichiers texte OEM vers ANSI Sam 18 Avr 2015 - 10:13 | |
| toute mes excuses je ne suis pas sur d'avoir bien compris faut il remplacer la nouvelle sub dans le programme? après test, j'ai un gros doute. mon texte est: à Úà la traduction normal serai :éèà mais je n'arrive pas à l'obtenir ou est mon erreur? | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Conversion de fichiers texte OEM vers ANSI Dim 19 Avr 2015 - 17:57 | |
| @mindstorm La nouvelle SUB oem2ansi(source_OEM$,destination_ANSI$) est simplement réécrite d’une autre façon pour être indépendante du programme qui l’utiliserait. Elle converti bien un fichier codé en OEM (donc issu d’une commande de l’invite de commande) vers un fichier codé en ANSI parfaitement lisible par WINDOWS. D’après mes tests, cette SUB fait bien son boulot. La conversion OEM / UNICODE / ANSI semble incorrecte. Et là, j’atteints la limite de mon savoir ! Désolé ! | |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: Conversion de fichiers texte OEM vers ANSI Lun 20 Avr 2015 - 20:22 | |
| merci papydall de toute façon cela fait plus de 20 ans que j'attends une solution. Grace à vous et a Panoramic j'ai déjà réalisé pas mal de rêves les plus fou et notamment le redresseur de photo ( étrange que cela n'intéresse pas plus de monde) a suivre | |
| | | Contenu sponsorisé
| Sujet: Re: Conversion de fichiers texte OEM vers ANSI | |
| |
| | | | Conversion de fichiers texte OEM vers ANSI | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |