“ am Anfang jeder Seite hinzu; kopieren Sie dann das Installationsverzeichnis „TOMCAT“ nach „webapp/filters“ Das ist es."/> “ am Anfang jeder Seite hinzu; kopieren Sie dann das Installationsverzeichnis „TOMCAT“ nach „webapp/filters“ Das ist es.">

Heim  >  Artikel  >  Java  >  Lösung für verstümmelte Zeichen in Java

Lösung für verstümmelte Zeichen in Java

藏色散人
藏色散人Original
2020-04-11 09:20:472931Durchsuche

Lösung für verstümmelte Zeichen in Java

Lösung für verstümmelte Zeichen in Java

Da die Standardcodierungsmethode für Java UNICODE ist, verwenden Sie Chinese It ist auch anfällig für Probleme:

String s2 = new String(s1.getBytes(“ISO-8859-1”),”GBK”);

1. UTF8 löst das JSP-Chinesisch-verstümmelte Problem

Empfohlenes Tutorial: „Java-Lernen

Im Allgemeinen fügen Sie am Anfang jeder Seite Folgendes hinzu:

<%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>

◆charset=UTF-8 wird verwendet, um die Codierungsmethode anzugeben, die JSP als „UTF-8“ an den Client ausgibt

◆pageEncoding="UTF-8", damit die JSP-Engine JSP-Seiten mit chinesischen Zeichen korrekt dekodieren kann, was unter LINUX sehr effektiv ist

◆request.setCharacterEncoding("UTF-8 "); Die Anfrage ist auf Chinesisch kodiert.

Manchmal löst dies das Problem immer noch nicht, und Sie müssen wie folgt damit umgehen:

String msg = request.getParameter("message");  String str=new String(msg.getBytes("ISO-8859-1"),"UTF-8");  out.println(st);

2. Ändern Sie einfach den Prozentsatz. Die Datei TOMCAT-Installationsverzeichnis %/ webappsservlets-examplesWEB -INFclassesfiltersSetCharacterEncodingFilter.class wird in Ihr Webapp-Verzeichnis/Filter kopiert. Wenn kein Filterverzeichnis vorhanden ist, erstellen Sie eines.

2) Fügen Sie die folgenden Zeilen zu Ihrer web.xml hinzu:

<filter>   
<filter-name>Set   Character   Encoding</filter-name>   
<filter-class>filters.SetCharacterEncodingFilter</filter-class>   
<init-param>   
<param-name>encoding</param-name>   
<param-value>GBK</param-value>   
</init-param>   
</filter>   
<filter-mapping>   
<filter-name>Set   Character   Encoding</filter-name>   
<url-pattern>/*</url-pattern>   
</filter-mapping>

3) Vervollständigen Sie

2. Holen Sie sich die Methodenlösung

1) Öffnen Sie den Server .xml-Datei von Tomcat, suchen Sie den Block und fügen Sie die folgende Zeile hinzu:

  URIEncoding=”GBK”

Das Ganze sollte wie folgt lauten:

<connector     
  port="80"   maxThreads="150"   minSpareThreads="25"   maxSpareThreads="75"   
  enableLookups="false"   redirectPort="8443"   acceptCount="100"   
  debug="0"   connectionTimeout="20000"     
  disableUploadTimeout="true"     
  URIEncoding="GBK"   
  />

2) Starten Sie Tomcat neu, alles ist in Ordnung.

3. xmlHttpRequest Chinesisches Problem

GBK-Kodierung für Seiten-JSP

Code:

<%@ page contentType="text/html; charset=GBK"%>

Javascript-Teil

Code:

function addFracasReport() {   
    var url="controler?actionId=0_06_03_01&actionFlag=0010";   
    var urlmsg="&reportId="+fracasReport1.textReportId.value;  //故障报告表编号   
           
    var xmlHttp=Common.createXMLHttpRequest();   
    xmlHttp.onreadystatechange = Common.getReadyStateHandler(xmlHttp, 
       eval("turnAnalyPage"));   
    xmlHttp.open("POST",url,true);   
    xmlHttp.setRequestHeader( " Content-Type " , " 
       application/x-www-form-urlencoded);   
    xmlHttp.send(urlmsg);          
}
#p#

Die im Hintergrund erhaltene ReportId ist verstümmelt. Der Hauptgrund ist, dass ich nicht weiß, welche Codierung xmlHttp(urlmsg); Ich habe es später mit Java übertragen und mehrere Methoden ohne Erfolg ausprobiert. Darunter sind:

Code:

public static String UTF_8ToGBK(String str) {   
        try {   
            return new String(str.getBytes("UTF-8"), "GBK");   
        } catch (Exception ex) {   
            return null;   
        }   
    }   
       
    public static String UTF8ToGBK(String str) {   
        try {   
            return new String(str.getBytes("UTF-16BE"), "GBK");   
        } catch (Exception ex) {   
            return null;   
        }   
    }   
       
    public static String GBK(String str) {   
        try {   
            return new String(str.getBytes("GBK"),"GBK");   
        } catch (Exception ex) {   
            return null;   
        }   
    }   
         public static String getStr(String str) {   
        try {   
            String temp_p = str;   
            String temp = new String(temp_p.getBytes("ISO8859_1"), "GBK");   
            temp = sqlStrchop(temp);   
            return temp;   
        } catch (Exception e) {   
            return null;   
        }   
    }

Das obige ist der detaillierte Inhalt vonLösung für verstümmelte Zeichen in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn