web-dev-qa-db-fra.com

Comment convertir un fichier encodé en ANSI en UTF-8 avec Notepad ++?

J'ai un site Web et je peux envoyer mes caractères turcs avec jQuery dans Firefox, mais Internet Explorer n'envoie pas mes caractères turcs. J'ai regardé mon fichier source dans le bloc-notes, et la page de code de ce fichier est ANSI.

Lorsque je le convertis en UTF-8 sans nomenclature et que je ferme le fichier, le fichier est à nouveau ANSI lorsque je rouvre.

Comment convertir mon fichier de ANSI à UTF-8?

59
Kerem Bekman

En ce qui concerne cette partie:

Lorsque je le convertis au format UTF-8 sans le fichier BOM ni le fichier Close, celui-ci redevient ANSI lorsque je le rouvre.

La solution la plus simple consiste à éviter complètement le problème en configurant correctement Notepad ++.

Essayez Settings -> Preferences -> New document -> Encoding -> choisissez UTF-8 sans nomenclature, et vérifiez Apply to opened ANSI files.

De cette façon, tous les fichiers ANSI ouverts seront traités comme UTF-8 sans nomenclature.

Pour une explication de ce qui se passe, lisez les commentaires ci-dessous cette réponse.

Pour en savoir plus sur Unicode et UTF-8, lisez cet excellent article de Joel Spolsky.

67
jakub.g

Peut-être que ce n’est pas la réponse dont vous aviez besoin, mais j’ai rencontré un problème similaire, j’ai donc décidé de le mettre ici.

J'avais besoin de convertir 500 fichiers XML en UTF8 via Notepad ++. Pourquoi Notepad ++? Lorsque j'ai utilisé l'option "Encoder en UTF8" (de nombreux autres convertisseurs utilisent la même logique), tous les caractères spéciaux ont été confondus. Je devais donc utiliser "Convertir en UTF8" de manière explicite.


Voici quelques étapes simples pour convertir plusieurs fichiers via Notepad ++ sans déranger avec des caractères spéciaux (par exemple, des marques diacritiques).

  1. Exécutez Notepad ++ puis ouvrez le menu Plugins-> Plugin Manager-> Show Plugin Manager
  2. Installez script Python. Une fois le plugin installé, redémarrez l'application.
  3. Choisissez le menu Plugins-> Script Python-> Nouveau script.
  4. Choisissez son nom, puis collez le code suivant:

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()

Après tout, lancez le script

41
Jun Murakami

Si vous n'avez pas de caractères non-ASCII (points de code 128 et plus) dans votre fichier, UTF-8 sans nomenclature est identique à l'ASCII, octet pour octet - donc Notepad ++ devinera faux.

Ce que vous devez faire est de spécifier le codage des caractères lors du traitement de la réponse AJAX - par exemple avec PHP, vous feriez ceci:

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

La partie importante est de spécifier le jeu de caractères avec tous réponse JS - sinon IE aura recours au codage par défaut du système de l'utilisateur, qui est généralement erroné.

14
Piskvor