Causes et solutions aux caractères tronqués en langage Java
a) Un programme d'interface graphique basé sur awt (swing) affiche des caractères tronqués en chinois
Dans les programmes d'interface graphique basés sur awt (swing), l'affichage chinois dans le menu apparaîtra généralement tronqué. La raison est généralement que la JVM ne trouve pas la police pour afficher le chinois. font sous l'installation d'origine, et les versions de distribution de Linux sont différentes, et les chemins et noms de leurs polices sont différents, de sorte que la JVM ne peut généralement pas trouver les polices incluses dans le système d'exploitation Linux. La solution consiste à autoriser la JVM à le faire. recherchez les polices incluses dans le système d'exploitation Linux. Par exemple, sous Redflag 6.0, vous pouvez utiliser la commande suivante pour résoudre le problème :
mkdir /usr/java/jdk1.6.0/jre/lib/fonts/fallback ln -s /usr/share/fonts/chinese/TrueType/*.ttf /usr/java/jdk1.6.0/jre/lib/fonts/fallback
Généralement, il n'est pas nécessaire de modifier le fichier de configuration des polices (fontconfig. OS.Version.properties) dans le répertoire JRE/lib/.
b) Le navigateur client système basé sur la structure B/S JSP (Servlet) affiche des caractères chinois tronqués
Les caractères chinois dans la page affichent des caractères tronqués
Pour le contenu statique comme pour un fichier HTML, le jeu de caractères du fichier doit uniquement être le même que celui défini à l'emplacement le fichier.
Pour les fichiers dynamiques comme JSP et Servlet, ils doivent être compilés. Pendant le fonctionnement, la JVM interprète le fichier de classe pour générer le fichier HTML requis par le navigateur client. Si des caractères chinois tronqués sont générés, c'est généralement le cas. compilé et exécuté généré au cours du processus. Si vous utilisez des distributions et des serveurs Linux commerciaux, il vous suffit généralement d'enregistrer le fichier JSP ou Servlet en tant que jeu de caractères UTF-8 et de définir Réglez-le simplement sur UTF-8. Si des caractères tronqués apparaissent toujours, vous pouvez le résoudre à l'aide des méthodes suivantes :
① Si le serveur est développé indépendamment, vous pouvez modifier le code source pour spécifier la JVM pour lire les fichiers, écrire des fichiers et générer des fichiers HTML. requis par le navigateur client. , la méthode de codage lors de la conversion de chaînes et de flux de séquences binaires, résolvant ainsi fondamentalement le problème et améliorant l'adaptabilité du serveur. Dans MyWebServer 2.0, j'ai adopté cette méthode, et le code est le suivant :
new BufferedReader(new InputStreamReader(new FileInputStream(jspfile),”GBK”)); new PrintWriter(serfile,”GBK”); new PrintWriter(new OutputStreamWriter(os,”GBK”));
② Bien entendu, vous pouvez également modifier le paramètre "locale" de la JVM dans le fichier d'entrée du serveur (c'est-à-dire le fichier contenant la sous-fonction principale). Le code est le suivant :
Locale.setDefault(new Locale(“zh”,”CN”));
③. Lorsque vous utilisez un serveur commercial, vous pouvez modifier le fichier shell qui démarre le serveur, définir la variable d'environnement "export LC_ALL=zh_CN.UTF-8" avant de démarrer le serveur, modifiant ainsi la valeur "locale" par défaut sous cette console.
④ Bien sûr, vous pouvez également modifier les paramètres « locales » du système d'exploitation, mais comme la modification des paramètres « locales » du système d'exploitation affectera d'autres applications, cette méthode est généralement utilisée.
La principale raison de l'utilisation de la méthode ci-dessus est que lorsque la JVM est démarrée pour la première fois, la "locale" du système d'exploitation sera définie sur la "locale" par défaut de la JVM lorsque le ". locale" n'est pas définie dans le système d'exploitation, la JVM définira la "locale" par défaut de la JVM sur la "locale" par défaut de la JVM. Bien sûr, vous pouvez également modifier le paramètre "locale" par défaut de la JVM lorsque exécutant l'application. Lorsque la JVM convertit des chaînes en flux de séquence binaire, si la méthode de codage est spécifiée, elle sera convertie dans la méthode de codage spécifiée, sinon elle sera convertie selon les "locales" par défaut de la JVM.
Conclusion
Les caractères tronqués générés par le langage Java en affichage chinois sous Linux sont principalement liés à la bibliothèque de polices de la JVM, aux paramètres régionaux du système d'exploitation, à la paramètres régionaux par défaut de la JVM et de l'application Les paramètres régionaux et le flux de séquence binaire directement spécifié dans l'application sont liés au jeu de caractères de conversion de chaîne. Cela est dû aux différentes méthodes de codage de caractères utilisées dans le processus de conversion mutuelle des flux de séquences binaires et des chaînes, ou la JVM ne peut pas trouver la police requise. Différentes méthodes peuvent être utilisées pour le résoudre. La méthode spécifique à utiliser dépend du traitement spécifique. .environnement applicatif.
Recommandé : [Tutoriel vidéo Linux]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!