Eclipse mal de propriétés Java encodage UTF-8
J'ai un JavaEE projet, dans lequel j'ai des messages, des fichiers de propriétés. Le codage de ces fichiers est définie sur UTF-8. Dans le fichier que j'ai utiliser les accents comme ä
, ö
, ü
. Le problème est que, parfois, ces caractères sont remplacés par unicode comme \uFFFD\uFFFD
, mais pas pour chaque personnage. Maintenant, j'ai un cas où ä
et ü
sont à la fois remplacés par \uFFFD\uFFFD
, mais pas pour chaque intervenant de ä
et ü
.
Le Git diff me montre quelque chose comme ceci:
mail.adresses=E-Mail hinzufügen:
-mail.adresses.multiple=E-Mails durch Kommata getrennt hinzufügen.
+mail.adresses.multiple=E-Mails durch Kommata getrennt hinzuf\uFFFD\uFFFDgen.
mail.title=Einladungs-E-Mail
box.preview=Vorschau
box.share.text=Sie können jetzt die ausgewählten Bilder mit Ihren Freunden teilen.
@@ -6880,7 +6880,7 @@ browser.cancel=Abbrechen
browser.selectImage=übernehmen
browser.starImage=merken
browser.removeImage=Löschen
-browser.searchForSimilarImages=ähnliche
+browser.searchForSimilarImages=\uFFFD\uFFFDhnliche
browser.clear_drop_box=löschen
Aussi, il y a des lignes de changé, je n'ai pas touché. Je ne comprends pas pourquoi je reçois un tel comportement. Ce qui pourrait être la cause du problème ci-dessus?
Mon système:
-
Antergos /Arch Linux
-
Système d'encodage UTF-8
Python 3.5.0 (default, Sep 20 2015, 11:28:25) [GCC 5.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.getdefaultencoding() 'utf-8'
-
-
Eclipse Mars 1
- Fichier texte encodage UTF-8
- Fichier de propriétés de l'encodage UTF-8
- Fichier texte encodage UTF-8
- Tomcat 8
- Java JDK 8
Si j'utilise un autre Éditeur comme Atom de modifier les propriétés des messages, des fichiers, je n'ai pas rencontré ce problème.
J'ai aussi réalisé dans un cas, si je copie la valeur d'origine browser.searchForSimilarImages=ähnliche
à partir de Git diff et remplacer la valeur faux browser.searchForSimilarImages=\uFFFD\uFFFDhnliche
dans Eclipse avec ça, puis-je avoir la bonne trémas dans le message de fichier de propriétés.
- certains de l'Unicode des lettres dans esponal porte un collier de caractère, je vous recommande d'utiliser des outils spéciaux pour convertir toutes les lettres pour échappé à la chaîne avant de la coller dans le fichier de propriétés. Sinon, l'utilisation de Code Java nouvelle Chaîne(de la valeur.getBytes("ISO-8859-1"), "UTF-8");, où la valeur est la valeur de propriétés
- Quel outil spécial voulez-vous dire? Comment dois-je faire
new String(value.getBytes("ISO-8859-1"), "UTF-8");
de l'avoir corriger dans le fichier de propriétés? - En raison de l'ISO-8859-1 problème, je recommande de ne pas utiliser les propriétés par défaut du chargeur fourni par Java. Remplacer le processus de chargement de sorte que directement en charge de tout à partir de fichiers UTF-8 à la place: stackoverflow.com/questions/4659929/...
- Mes collègues n'ont pas ce problème. Je me demande pourquoi et quelle est la cause il.
- des fichiers de propriétés sont définies pour utiliser ISO-8859-1 codage. ils ne devraient pas travailler à tous si vous utilisez UTF-8, donc je ne vois pas l'intérêt d'utiliser de tels fichiers.
- Comment est votre workspace Eclipse encodage? Fenêtre > Préférences > Général > espace de travail > Texte d'Encodage de Fichier. Il doit être en UTF-8. Réponse de hagrawal rend certainement le pire. Veuillez remettre "Fichier de Propriétés Java" encoding ISO-8859-1 et de ne pas y toucher.
- Vous n'avez fourni vos raisons sur pourquoi "pensez-vous que ce n'est pas bon, il suffit de le dire n'est pas suffisant.
- Il est situé à UTF-8.
Vous devez vous connecter pour publier un commentaire.
Cause:
Par défaut ISO 8859-1 l'encodage des caractères est utilisé pour Eclipse fichier de propriétés (lire ici), donc si le fichier contient des caractères au-delà de la norme ISO 8859-1 alors elle ne sera pas traitée comme prévu.
Solution 1
Si vous utilisez Eclipse ensuite, vous remarquerez qu'il convertit implicitement le caractère spécial dans \uXXXX équivalent. Essayez de copier
dans un fichier de propriétés ouvert dans Eclipse.
EDIT: Comme par le commentaire de l'OP
Mise à jour de l'encodage de votre Eclipse comme indiqué ci-dessous. Si vous définissez l'encodage UTF-32 alors même que vous pouvez voir les caractères Chinois, ce qui vous ne pouvez pas voir, de façon générale.
Comment changer l'Encodage du fichier de propriétés dans Eclipse: Voir cette Eclipse bug Bugzilla pour plus de détails, qui parle de plusieurs autres possibilités et à la fin de suggérer ce que j'ai mis en évidence ci-dessous.
Les caractères chinois peuvent être vu dans Eclipse après l'encodage est défini correctement:
Solution 2
Si ci-dessus ne fonctionne pas systématiquement pour vous (il fonctionne pour moi et je ne vois jamais de problèmes de codage), puis essayez ce à l'aide de certains plugin Eclipse qui s'occupe de l'encodage des propriétés ou d'autres fichiers. Par exemple Eclipse ResourceBundle Éditeur ou Étendue Resource-Bundle de l'éditeur
Je vous conseille d'utiliser Eclipse ResourceBundle Éditeur.
Solution 3
Une autre possibilité de changer l'encodage de fichier à l'aide de
Edit --> Set Encoding
option. Il est vraiment important car il modifie le jeu de caractères par défaut et d'encodage de fichier. Jouer avec par la modification de l'encodage à l'aideEdit --> Set Encoding
option et ne suivant Java sysoutSystem.out.println("Default Charset=" + Charset.defaultCharset());
etSystem.out.println(System.getProperty("file.encoding"));
En aparté: 1
Traiter le fichier de propriétés pour avoir le contenu de la norme ISO 8859-1 de codage de caractères en utilisant native2ascii - Native-à-ASCII Convertisseur
Ce native2ascii: Il convertit tous les non-ISO 8859-1 caractère dans leur équivalent \uXXXX. C'est un bon outil, car vous n'avez pas besoin de rechercher l' \uXXXX équivalent de caractère spécial.
L'utilisation de l'UTF-8:
native2ascii -encoding utf8 e:\a.txt e:\b.txt
En aparté: 2
Chaque programme informatique, un environnement de développement intégré, serveur d'application, serveur web, navigateur, etc. comprend seulement les bits, de sorte qu'il faut savoir interpréter les bits anticipée de sens, car en fonction de l'encodage utilisé, même bits peut représenter des caractères différents. Et c'est là que "l'Encodage" vient de l'image en donnant un identifiant unique pour représenter un caractère de sorte que tous les programmes d'ordinateur, les divers OS etc. sait exact de la bonne façon de l'interpréter.
Donc, si vous avez écrit dans un fichier à l'aide de certaines schéma de codage permet de dire que l'UTF-8, et ensuite la lecture à l'aide de n'importe quel éditeur mais l'exécution d'un schéma de codage en UTF-8 alors vous pouvez vous attendre à obtenir l'affichage correct.
Merci de lire mon cette réponse pour obtenir plus de détails, mais à partir du navigateur-serveur de point de vue.
\uXXXX
dans le fichier de propriétés. Je veux avoir le bon UTF-8 représentation dans le fichier.java.util.Properties
API.UTF-8
et ils n'ont pas ce comportement. Ils m'ont aussi dit que je devrais faire le réglage.ResourceBundle
à lire, alors vous pouvez avoir besoin de créer et d'utiliser un customResourceBundle.Control
classe qui peut être utilisé avec ResourceBundle pour lire les propriétés dans tout schéma de codage.eclipse.ini
fichier, etc., mais je pense qu'avec Eclipse 3, cette fonctionnalité a été introduite d'avoir un contrôle précis .. Ce que vous dites est juste, mais les contextes sont différents .. Ici on parle de l'Éclipse contexte et pas de Java ou un autre contexte ..Des Fichiers De Propriétés devraient être ISO-8859-1 (Latin-1) codé.
Probablement, ce que l'éclipse a été réglé par défaut en tant que bien.
Vous avez à faire en sorte que chaque outil est exécuté dans la construction ou quel que soit méconnu le spec et utilise l'UTF-8 à la place.
ä
,ü
etö
dans le fichier, qui ne sont pas remplacés. Pourquoi ceux qui ne sont pas remplacés? Comment dois-je trouver le réglage qui cause ce problème? Dois-je rechercher dans tous les Eclipse, et également pour chaque plugin Eclipse pour trouver la bonne configuration?\uFFFD
est un Java caractère d'échappement. Régulière ISO-8859-1 fichiers encodés ne pas utiliser un tel échapper. Il doit donc être de l'éditeur que vous utilisez. Assurez-vous que vous n'êtes pas à l'aide de la "Propriétés de l'Éditeur de Fichier" dans Eclipse ou similaire outil externe.ä
et avec\uFFFD\uFFFD
et certainsä
sont remplacés par\uFFFD\uFFFD
et d'autres non.Ajouter les arguments suivants à votre
eclipse.ini
fichier.Par défaut, Eclipse utilise le format d'encodage ramassé par la Machine Virtuelle Java (JVM). Aussi, vous pouvez définir l'encodage du fichier à
utf-8
.UTF-8
et aussi mon propriétés de codage est défini àUTF-8
.Cela ressemble à un mélange de Eclipse et git d'encodage ou plutôt non-codant.
Git utilise octets brutes et ne se soucie pas de l'encodage. À l'aide de
git diff
vous pourriez obtenir des caractères comme indiqué ici. Un exemple, il y aR<C3><BC>ckg<C3><A4>ngig # should be "Rückgängig"
.Comme vous pouvez le voir il y a deux drôles de support de choses en montrant par un tréma. Et dans votre éditeur, il y a toujours deux
\uFFFD
pour chaque tréma dans les lignes qui commencent par +.Donc je suppose que votre UTF-8, l'éditeur tente d'interpréter le git de notation et d'échec. Ce à son tour conduit à la représentation
\uFFFD
, ce qui en gros veut dire que c'est le caractère dont la valeur est inconnue ou non-représentable (voir ici).Comme suggéré dans le premier lien, vous pouvez essayer le réglage de
LESSCHARSET=UTF-8
dans votre variable d'environnement (Windows). Hmm, sous Linux, il devrait être dansetc/profile
?set LESSCHARSET UTF-8
dans le POISSON shell et après que j'ai eu aussi\uFFFD\uFFFD
au lieu de corriger€
signe.voir: un marqueur comme FFFD (CARACTÈRE de REMPLACEMENT) dans http://unicode.org/faq/utf_bom.html
et voir native2ascii --help
un cas