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.
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