Si vous voulez savoir si la chaîne spécifiée est prise en charge par le code de caractère cible, il est pratique d'utiliser CharsetEncoder.canEncode
. C'est une méthode qui retourne true si la méthode donnée en argument est prise en charge par le code de caractère cible, false sinon, par exemple, si vous souhaitez vérifier si la chaîne de caractères s
est prise en charge par Shift_JIS, Écrivez juste comme ça.
String s = "...";
Charset.forName("Shift_JIS").newEncoder().canEncode(s);
Comme exemple pour vérifier si cela fonctionne réellement, nous utiliserons le kanji "Taka". C'est une soi-disant «échelle». Ce kanji n'est pas pris en charge par Shift_JIS, mais il est pris en charge par son extension, Windows-31J. Vérifions ça.
Charset.forName("Shift_JIS").newEncoder().canEncode("Taka"); //=> false
Charset.forName("Windows-31J").newEncoder().canEncode("Taka"); //=> true
Il semble fonctionner comme prévu (´ ・ ω ・ `)
** Informations environnementales: **
C:\>javac -version
javac 11.0.3
C:\>java -version
openjdk version "11.0.3" 2019-04-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.3+7)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.3+7, mixed mode)