Jump to content
Sign in to follow this  
Manimal

Conversão de Codificação dos Scripts

Recommended Posts

Olá.

   Para converter seu script basta informar a pasta raiz onde estão armazenados os seus scripts e mandar ver. Eles serão convertidos para o padrão UTF-8 with BOM, com vários benefícios.

   Não esqueça de fazer uma cópia dos seus arquivos ANTES da conversão pois se der alguma coisa errada, poder fazer novamente (se ainda quiser).

 

#include <File.au3>
#include <Array.au3>
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>

If not CONVERSOR_ENCODING("C:\Scripts") Then
   MsgBox($MB_OK, "Erro", "Problemas ao converter os cripts")
EndIf

Func CONVERSOR_ENCODING ($sPasta, $nEncoding = $FO_UTF8)
   If IsKeyword($nEncoding) Then $nEncoding = $FO_UTF8
   Local $aArquivos = _FileListToArrayRec($sPasta, "*.au3", $FLTAR_FILES, $FLTAR_RECUR, $FLTAR_NOSORT, $FLTAR_FULLPATH)
   If @error Then Return SetError(1, 0, False)
   ConsoleWrite($sPasta & @CRLF)
   Local $sConteudo, $hArquivo, $nOld_Encoding = -1, $nNew_Encoding = -1, $sAtributos = "", $bMudou_Atributo = False
   For $nArquivo = 1 to $aArquivos[0]
      $bMudou_Atributo = False
      $nOld_Encoding = FileGetEncoding($aArquivos[$nArquivo])
      $sAtributos = FileGetAttrib($aArquivos[$nArquivo])
      If StringInStr($sAtributos, "R") Then
         $bMudou_Atributo = True
         FileSetAttrib($aArquivos[$nArquivo], "-R")
      EndIf
      If $nOld_Encoding = $nEncoding Then
         ConsoleWrite("> ")
      Else
         ConsoleWrite("! ")
         $sConteudo = FileRead($aArquivos[$nArquivo])
         FileDelete($aArquivos[$nArquivo])
         $hArquivo = FileOpen($aArquivos[$nArquivo], $FO_OVERWRITE + $nEncoding)
         ConsoleWrite(FileWrite($hArquivo, $sConteudo) & " ")
         FileClose($hArquivo)
      EndIf
      If $bMudou_Atributo Then FileSetAttrib($aArquivos[$nArquivo], "+R")
      $nNew_Encoding = FileGetEncoding($aArquivos[$nArquivo])
      ConsoleWrite(StringFormat("%-100s", $aArquivos[$nArquivo]) & " = " & NOME_ENCODING($nOld_Encoding) & " => " & NOME_ENCODING($nNew_Encoding) & @CRLF)
   Next
   Return SetError(0, 0, True)
EndFunc   ;==>CONVERSOR_ENCODING

Func NOME_ENCODING ($nCode)
   Local $aNomes = [ [ $FO_UTF16_LE,   "UTF16 Little Endian" ], _
                     [ $FO_UTF16_BE,   "UTF16 Big Endian" ], _
                     [ $FO_UTF8,       "UTF8 (with BOM)" ], _
                     [ $FO_UTF8_NOBOM, "UTF8 (without BOM)" ], _
                     [ $FO_ANSI,       "ANSI (containing char > 127 and < 255)" ] ]
   Local $nPosicao = _ArraySearch($aNomes, $nCode)
   If @error Then Return SetError(1, 0, "NÃO ENCONTRADO")
   Return SetError(0, 0, StringFormat("%40s", $aNomes[$nPosicao][1]))
EndFunc

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×