web-dev-qa-db-fra.com

Définir UTF8 comme encodage de caractères par défaut dans Windows 7

existe-t-il un moyen de configurer Windows 7 pour utiliser de manière globale le format UTF-8?
sa vraiment ennuyeux pour configurer chaque éditeur de texte pour l'utiliser.

61
Baarn

La réponse courte est non, ce n'est pas possible .

Pour élaborer, je crains fort que vous ne trouviez pas d’option de codage global dans Windows 7 qui vous permette à la fois 1) de définir un paramètre par défaut global auquel 2) toutes les applications que vous avez énumérées obéiraient.

Aussi, je voudrais demander quel est le problème que vous essayez de résoudre?

Il appartient à l’application de choisir si elle utilise Unicode en interne pour représenter les données. Bien que l'utilisation de l'unicode soit encouragée , vous ne pouvez jamais être sûr que toutes vos applications le prennent en charge en interne.

Ce que vous pouvez faire , cependant, change le codage de caractères par défaut pour chacune des applications répertoriées:

  • Pour Eclipse, le codage par défaut pour les nouveaux fichiers peut être défini à partir de Windows> Préférences> Général> Types de contenu (voir publication sur Eclipse Community Forms ).
  • Pour le Bloc-notes ++, accédez à Paramètres> Préférences> Nouveau document/Défaut/Répertoire et définissez Encodage sur UTF-8
  • Quant à Thunderbird, je suis quasiment sûr qu’il utilise déjà le codage par défaut UTF-8? (voir ces notes sur l'encodage des caractères )
  • Dans le cas d’OpenOffice (et de LibreOffice), vous n’avez même pas besoin de vous soucier de l’encodage, car les documents enregistrés par OpenOffice sont basés sur XML, l’encodage étant spécifié en interne dans les fichiers XML (et UTF- 8 est déjà la valeur par défaut également)
  • Du point de vue UTF-8, PowerShell est délicat. Il a le codage par défaut de UTF-16LE.
45
jsalonen

Cela n'est pas possible principalement parce que Windows n'autorise pas UTF-8 en tant que page de codes ANSI du système, même s'il possède une page de codes ANSI pour UTF-8, codepage 65001 . Il semble y avoir plusieurs raisons à cela:

  • Quand Unicode a été créé, Microsoft a décidé qu'UCS-2 serait le meilleur moyen de prendre en charge Unicode. A cette époque, Unicode était en 16 bits.
  • Windows a une page de code ANSI pour chaque langue prise en charge , contrairement à Unix et Linux où la langue et le codage peuvent être définis indépendamment.
  • La page de code 65001 ne fonctionne pas partout. Plus précisément, il est interrompu par la prise en charge multi-octets dans Windows qui prévoit que les caractères multi-octets nécessitent un ou deux octets, tandis que UTF-8 nécessite entre un et quatre octets. L'API WriteFile() , par exemple, renvoie un résultat incorrect sous la page de code 65001 qui passe en revue tout le code de la bibliothèque, tel que write() .

Le regretté Michael Kaplan, qui a travaillé sur l’internationalisation chez Microsoft, avait un blog, "Sorting it all all Out" , avec plusieurs articles sur des sujets connexes. Je lui ai envoyé directement un courrier électronique au sujet de certaines de ces préoccupations dans la journée.

20
hippietrail