Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[Exe][Experimentale] Encoding Patch
Auteur Message
Répondre en citant
Message [Exe][Experimentale] Encoding Patch 
Bonjour, je vous présente une commande externe idéale pour les charactères "cheloux", je l'ai nommée "Encoding Patch" (alias ep), la commande est partiellement compatible avec drawchar.
Son utilisation est simple, vous la mettez ou vous voulez dans le code (de préférence, au début, après le @Echo off), et en ayant défini l'encodage en celui que vous voulez sur le fichier (c'est a dire par exemple avec notepad++, il le mettre avec Encodage en haut ,attention avec l'utf-8, prenez le sans BOM !!)

Dans certains cas en UTF-8, la police a utilisé doit être consola car sinon on peut avoir des '?' mais il vaut mieux éviter car il y a des bugs (voir plus bas).

Exemple avec l'utf-8:
Code:
@Echo off
ep UTF-8
echo N©▄I`¯¬ô ░
echo N©▄I`¯¬ô ░>test.txt
pause


Marchera très bien comme prévu (sauf le ░ avec consolas malheureusement)

Je vous fait une liste de quelques encodages possible et leur compatibilité:

    ASCII: (par defaut de cmd) (c'est OEM 850 Multilingue qui est par defaut) fonctionnel
    Unicode: Fait la même chose que ASCII
    UTF-8: (Recommandé) Parfaitement fonctionnel avec la plupart des caractères unicode mais bug de I/O de fichier avec DrawChar (contournable avec Unicode)
    UTF-7: Non testé (logiciels non compatibles avec l'encodage)
    UTF-16 (BE/LE): Incompatible (crash)
    ISO 8859-6: Partiellement Incompatible (crash dans des scripts)
    OEM-US: Incompatible (non supporté)


Il faut savoir que les encodages incompatibles sont probablement contournables.

Téléchargement: https://up1.ca/#FbfaIsV376nKOHu6TZ9XTQ
Obselete, voir plus bas.

Code:
using System;
using System.Text;

namespace EncodingPatch
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Encoding encoding = Encoding.GetEncoding(args[0]);
                Console.InputEncoding = encoding;
                Console.OutputEncoding = encoding;
            }
            catch (Exception e)
            {
                Console.WriteLine("Error " + e.Message);
            }
        }
    }
}




Mise a jour du programme faisant 3ko de moins et étant plus rapide (moins d'appels d'IL) donc 2ko 1.5ko(plus bas n'est pas possible, car le compilateur remplis de lui même le fichier de 0x0, si toutefois je trouve, je publie une nouvelle mise a jour).

Téléchargement
Nouvelle version faisant 1.5ko pile: https://up1.ca/#Tuu7xXUlcoWFlaa1rKD9rA
Code:
.assembly ep
{
}

.class ep.pg
{
  .method static void m(string[] a)
  {
    .entrypoint
    .try
    {
      ldarg.0
      ldc.i4.0
      ldelem.ref
      call       class [mscorlib]System.Text.Encoding [mscorlib]System.Text.Encoding::GetEncoding(string)
      dup
      call       void [mscorlib]System.Console::set_InputEncoding(class [mscorlib]System.Text.Encoding)
      call       void [mscorlib]System.Console::set_OutputEncoding(class [mscorlib]System.Text.Encoding)
      leave.s    End

    }
    catch [mscorlib]System.Exception
    {
      ldstr      "Unknow encoding."
      call       void [mscorlib]System.Console::WriteLine(string)
     leave.s    End
   }
    End: ret
  }
}


EDIT: Mis a jour pour un exécutable de 1.5ko.

NEW:
Code:
set il=%random%
echo .assembly ep{}.class ep.pg{.method static void m^(string[] a^){.entrypoint .try{ldarg.0 ldc.i4.0 ldelem.ref call class[mscorlib]System.Text.Encoding[mscorlib]System.Text.Encoding::GetEncoding^(string^)dup call void[mscorlib]System.Console::set_InputEncoding^(class[mscorlib]System.Text.Encoding^)call void[mscorlib]System.Console::set_OutputEncoding^(class[mscorlib]System.Text.Encoding^)leave.s End}catch[mscorlib]System.Exception{ldstr"Unknow encoding."call void[mscorlib]System.Console::WriteLine^(string^)leave.s End}End:ret}}>%temp%\%il%.il
REM Uniquement le framework 2.0 et 4.0 sont supportés car la commande ilasm est disponible que sur ceux-là.
%windir%\Microsoft.NET\Framework\v2.0.50727\ilasm /OUTPUT=ep.exe %TEMP%\%il%.il 1>nul




Dernière édition par TSnake41 le Lun 5 Oct 2015 - 22:47; édité 18 fois

______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [Exe][Experimentale] Encoding Patch 
Excellent TS !

Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Message [Exe][Experimentale] Encoding Patch 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch