Agron Merseli

Python Scripts per Notepad++

A volte lavorando su differenti piattaforme mi è capitato di dover spostare sorgenti da un posto ad un altro, solitamente questa semplice operazione di copia-incolla non comporta problemi, però se si lavora con Eclipse, i sorgenti sono trattati come semplici file di testo per cui la codifica diventa importante per evitare sorprese soprattutto se i sorgenti sono molti.

Codifica testo errata

Solitamente in Eclipse i file di testo sono codificati come "Cp1252", quindi se si utilizzano i caratteri latini classici è necessario che i file siano codificati in UTF-8 e la prima opzione da modificare nell'IDE è la seguente.

In Windows – Preferences – General – Workspace – Text file encoding, seleziona Other: UTF-8

A questo punto procedere con l'importazione dei sorgenti nel progetto.

Se i sorgenti dovessero essere già stati importati è necessario convertirli alla codifica corretta.

Ed è qui che entra in gioco un tool molto utile per eseguire delle macro e script scritti in Python su Notepad++, il plugin si chiama Python Script e si installa dal Plugin Manager di Notepad++.

Per creare un nuovo script dal menù Plugin - Python Script - New Script, dare un nome allo script che si vuole creare.

In this case, the script to convert the encoding of files into UTF-8 with BOM is as follows.

import os;
import sys;
filePathSrc="D:\\eclipse\\eclipse-workspace\\LibroJava11\\src\\LibroJava*11"
for root, dirs, files in os.walk(filePathSrc):
    for fn in files:
      if fn[-4:] != '.jar' and fn[-5:] != '.ear' and fn[-4:] != '.gif' and fn[-4:] != '.jpg' and fn[-5:] != '.jpeg' and fn[-4:] != '.xls' and fn[-4:] != '.GIF' and fn[-4:] != '.JPG' and fn[-5:] != '.JPEG' and fn[-4:] != '.XLS' and fn[-4:] != '.PNG' and fn[-4:] != '.png' and fn[-4:] != '.cab' and fn[-4:] != '.CAB' and fn[-4:] != '.ico':
        notepad.open(root + "\\" + fn)
        console.write(root + "\\" + fn + "\r\n")
        #Does not work --> notepad.runMenuCommand("Encoding", "Character sets", "Chinese", "GB2312 (Simplified)")
        # notepad.menuCommand(MENUCOMMAND.FORMAT_GB2312)
        # notepad.runMenuCommand("Encoding", "Convert to UTF-8-BOM")
        notepad.menuCommand(MENUCOMMAND.FORMAT_CONV2_UTF_8)
        # Reference: https://github.com/bruderstein/PythonScript/blob/master/PythonScript/src/NotepadPython.cpp
        notepad.save()
        notepad.close()

Notare come nella stringa "filePathSrc" ho inserito il percorso contenente i sorgenti e col metodo "notepad.menuCommand" viene passato come comando "MENUCOMMAND.FORMAT_CONV2_UTF_8" che codifica il file.

Salvare lo script una volta completo.

Per lanciare lo script dal menu Plugins – Python Scripts – Script e selezionare lo script creato.

A questo punto ricaricato il sorgente dentro Eclipse si può verificare che la codifica del sorgente è corretta.

Per maggiori informazioni riguardo il plugin Python Scripts e per molti altri script utili consultare la pagina GitHub dello sviluppatore.

Rinomina ConvertToUFT-8-BOM.txt in ConvertToUFT-8-BOM.py

Lascia un commento

%d blogger hanno fatto clic su Mi Piace per questo: