Come posso convertire un file codificato ANSI in UTF-8 con Notepad ++?

Ho un sito Web e posso inviare i miei caratteri turchi con jQuery in Firefox, ma Internet Explorer non invia i miei caratteri turchi. Ho guardato il mio file sorgente nel blocco note e la codepage di questo file è ANSI.

Quando lo converto in UTF-8 senza BOM e chiudo il file, il file è di nuovo ANSI quando si riapre.

Come posso convertire il mio file da ANSI a UTF-8?

Per quanto riguarda questa parte:

Quando lo converto in UTF-8 senza file bom e close, il file è di nuovo ANSI quando si riapre.

La soluzione più semplice è quella di evitare completamente il problema configurando correttamente Notepad ++.

Prova Settings -> Preferences -> New document -> Encoding -> scegli UTF-8 senza BOM e seleziona Apply to opened ANSI files .

In questo modo tutti i file ANSI aperti verranno trattati come UTF-8 senza BOM.

Per spiegazioni su cosa sta succedendo, leggi i commenti sotto questa risposta.

Per imparare a fondo su Unicode e UTF-8, leggi questo eccellente articolo di Joel Spolsky.

Forse questa non è la risposta che avevi bisogno, ma ho riscontrato un problema simile, quindi ho deciso di metterlo qui.

Avevo bisogno di convertire 500 file xml in UTF8 tramite Notepad ++. Perché Notepad ++? Quando ho usato l’opzione “Codifica in UTF8” (molti altri convertitori usano la stessa logica) ha incasinato tutti i caratteri speciali, quindi ho dovuto usare “Converti in UTF8” in modo esplicito.


Ecco alcuni semplici passaggi per convertire più file tramite Notepad ++ senza incasinare con caratteri speciali (ad esempio segni diacritici).

  1. Avvia Notepad ++ e quindi apri il menu Plugin-> Plugin Manager-> Show Plugin Manager
  2. Installa script Python . Quando il plugin è installato, riavvia l’applicazione.
  3. Scegliere il menu Plugin-> Script Python-> Nuovo script .
  4. Scegli il suo nome e quindi il codice seguente:

convertToUTF8.py

 import os import sys from Npp import notepad # import it first! filePathSrc="C:\\Users\\" # Path to the folder with files to convert for root, dirs, files in os.walk(filePathSrc): for fn in files: if fn[-4:] == '.xml': # Specify type of the files notepad.open(root + "\\" + fn) notepad.runMenuCommand("Encoding", "Convert to UTF-8") # notepad.save() # if you try to save/replace the file, an annoying confirmation window would popup. notepad.saveAs("{}{}".format(fn[:-4], '_utf8.xml')) notepad.close() 

Dopo tutto, esegui lo script

Se non si dispone di caratteri non ASCII (codepoint 128 e superiori) nel file, UTF-8 senza BOM è uguale a ASCII, byte per byte, quindi Notepad ++ indovina male.

Quello che devi fare è specificare la codifica dei caratteri quando servi la risposta AJAX , ad esempio con PHP, dovresti fare questo:

 header('Content-Type: application/json; charset=utf-8'); 

La parte importante è specificare il charset con ogni risposta JS – altrimenti IE ricadrà sulla codifica predefinita del sistema dell’utente, che è la maggior parte delle volte sbagliata.