J'ai une chaîne avec un caractère "ñ" et j'ai quelques problèmes avec elle. J'ai besoin d'encoder cette chaîne en encodage UTF-8. Je l'ai essayé de cette façon, mais cela ne fonctionne pas:
byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");
Comment encoder cette chaîne en utf-8?
{In,Out}putStream{Read,Writ}ers
faire pour eux. Je me demande pourquoi?Réponses:
String
les objets en Java utilisent le codage UTF-16 qui ne peut pas être modifié.La seule chose qui peut avoir un encodage différent est un
byte[]
. Donc, si vous avez besoin de données UTF-8, vous avez besoin d'un fichierbyte[]
. Si vous avez unString
qui contient des données inattendues, alors le problème est à un endroit antérieur qui a incorrectement converti certaines données binaires en aString
(c'est-à-dire qu'il utilisait un mauvais encodage).la source
byte[]
, cela n'a pas de sens pourString
(à moins que l'encodage soit UTF-16, auquel cas cela a du sens mais il s'agit toujours d'informations inutiles).String objects in Java use the UTF-16 encoding that can't be modified.
Avez-vous une source officielle pour cette citation?Que diriez-vous d'utiliser
la source
myString.getBytes(Charsets.UTF_8)
et octets -> Chaîne:new String(myByteArray, Charsets.UTF_8)
.StandardCharsets.UTF_8
. Disponible en Java 1.7+.Dans Java7, vous pouvez utiliser:
Cela a l'avantage de
getBytes(String)
ne pas déclarerthrows UnsupportedEncodingException
.Si vous utilisez une ancienne version de Java, vous pouvez déclarer vous-même les constantes du jeu de caractères:
la source
String value = new String(myString);
.Utilisez à la
byte[] ptext = String.getBytes("UTF-8");
place degetBytes()
.getBytes()
utilise ce que l'on appelle le «codage par défaut», qui peut ne pas être UTF-8.la source
Une chaîne Java est toujours codée en interne en UTF-16 - mais vous devriez vraiment y penser comme ceci: un encodage est un moyen de traduire entre des chaînes et des octets.
Donc, si vous avez un problème d'encodage, au moment où vous avez String, il est trop tard pour le résoudre. Vous devez fixer l'endroit où vous créez cette chaîne à partir d'un fichier, d'une base de données ou d'une connexion réseau.
la source
Vous pouvez essayer de cette façon.
la source
En un instant, j'ai traversé ce problème et j'ai réussi à le résoudre de la manière suivante
je dois d'abord importer
Ensuite, j'ai dû déclarer une constante à utiliser
UTF-8
etISO-8859-1
Ensuite, je pourrais l'utiliser de la manière suivante:
la source
et, si vous souhaitez lire un fichier texte avec "ISO-8859-1" codé:
la source
J'ai utilisé le code ci-dessous pour encoder le caractère spécial en spécifiant le format d'encodage.
la source
Un guide étape par étape rapide pour configurer l'encodage par défaut NetBeans UTF-8. En conséquence, NetBeans créera tous les nouveaux fichiers en encodage UTF-8.
Guide pas à pas de l'encodage par défaut NetBeans UTF-8
Accédez au dossier etc dans le répertoire d'installation de NetBeans
Modifier le fichier netbeans.conf
Rechercher la ligne netbeans_default_options
Ajoutez -J-Dfile.encoding = UTF-8 entre guillemets à l'intérieur de cette ligne
(exemple:
netbeans_default_options="-J-Dfile.encoding=UTF-8"
)Redémarrez NetBeans
Vous définissez le codage par défaut de NetBeans UTF-8.
Vos netbeans_default_options peuvent contenir des paramètres supplémentaires entre guillemets. Dans ce cas, ajoutez -J-Dfile.encoding = UTF-8 à la fin de la chaîne. Séparez-le par un espace des autres paramètres.
Exemple:
voici le lien pour plus de détails
la source
Cela a résolu mon problème
la source