2012-07-25 17 views
5

Wir laufen in den Fehlern verursachten Probleme hier beschrieben: http://bugs.sun.com/view_bug.do?bug_id=6183404Übergeordnete Standardcodierung in Java

Ich habe bereits ein Update mit einem benutzerdefinierten charset implementiert, um die falschen Zuordnungen zu beheben. Dies behebt jedoch immer noch nicht das Problem für eine Java-Anwendung, die wir verwenden, da diese fest mit dem Standard-Zeichensatz "GBK" codiert ist.

Gibt es eine Möglichkeit, java.nio.charset.spi.CharsetProvider zu verwenden, um vorhandene Standard-Zeichensätze zu überschreiben?

+0

Vielleicht JRebel? Das kann Klassen in der Laufzeit ändern. Auf diese Weise können Sie die gewünschten Klassen überschreiben. Ich habe es nie benutzt, aber ich habe immer positive Kommentare gehört. – 11684

Antwort

3

Basierend auf diesem Code in Charset, sieht es nicht so aus, als könnten Sie den Standardprovider überschreiben, da er vor irgendwelchen zusätzlichen gesucht wird.

if ((cs = standardProvider.charsetForName(charsetName)) != null || 
    (cs = lookupExtendedCharset(charsetName))   != null || 
    (cs = lookupViaProviders(charsetName))    != null) 

Wenn die Anwendung speichert den charset Namen in einem Feld, Sie etwas Gemeines mit Reflexion, es zu ändern tun konnte, bevor die Anwendung gestartet wird.

+0

OK, danke, das habe ich vermutet, aber ich habe mich nur gefragt, ob ich etwas verpasst habe. Scheint, Wert ist kein Feld, mit Decompiler Ich kann Funktion in der Klasse in WAR sehen, die dies setzt, insbesondere 'if (paramString.equals (" 936 ")) zurück" GBK ";'. Verstehe ich könnte das irgendwie übersteuern, würde es aber lieber nicht. – Patrick

Verwandte Themen