2012-07-25 25 views
5

Biz burada açıklanan hata nedeniyle sorunlarla çalışıyor: http://bugs.sun.com/view_bug.do?bug_id=6183404geçersiz kılma standart kodlama Java

Zaten yanlış eşleştirmeleri düzeltmek için özel bir karakter kümesi kullanılarak bir düzeltme uyguladı. Ancak, bu, standart "GBK" karakter kümesini kullanmak için kodlanmış olduğu için kullandığımız bir Java uygulamasının sorununu gidermez.

Varolan, standart karakter kümelerini geçersiz kılmak için java.nio.charset.spi.CharsetProvider'u kullanmanın bir yolu var mı?

+0

Belki de JRebel? Bu, çalışma zamanında sınıfları değiştirebilir. Bu şekilde istediğiniz sınıfları geçersiz kılabilirsiniz. Hiç kullanmadım, ama her zaman olumlu yorumlar duydum. – 11684

cevap

3

Bu kod Charset numaralı telefona dayanarak, herhangi bir ek aramadan önce arama yapıldığından standardProvider'ı geçersiz kılabilirsiniz.

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

uygulama başlatmadan önce, sen yansıması ile kötü şeyler yapabileceğini bir tarlada karakter adı değiştirmek için uygulama mağazaları edin.

+0

Tamam, teşekkürler, şüphelendiğim şey bu, ama sadece bir şeyleri özlediğimi merak ettim. Değer bir alan değil, decompiler kullanarak, SAĞLAMDA SAHİP olan sınıftaki fonksiyonu görebiliyorum, özellikle eğer (paramString.equals ("936")) "GBK" ise; Bunu bir şekilde geçersiz kılabileceğimi anlayabilirim. – Patrick