Una cadena no necesita codificación. Es simplemente una secuencia de caracteres Unicode.
Necesita codificar cuando desea convertir una cadena en una secuencia de bytes. El juego de caracteres que elija (UTF-8, cp1255, etc.) determina el mapeo Carácter-> Byte. Tenga en cuenta que un personaje no necesariamente se traduce en un solo byte. En la mayoría de los conjuntos de caracteres, la mayoría de los caracteres Unicode se traducen en al menos dos bytes.
codificación de una cadena se lleva a cabo por:
String s1 = "some text";
byte[] bytes = s1.getBytes("UTF-8"); // Charset to encode into
Es necesario decodificar cuando se tiene la secuencia de bytes а y desea convertirlos en una cadena. Cuando hace eso, necesita especificar, nuevamente, el juego de caracteres con el que originalmente se codificaron los bytes (de lo contrario, terminará con un texto confuso).
Decodificación:
String s2 = new String(bytes, "UTF-8"); // Charset with which bytes were encoded
Si se quiere entender esto mejor, un gran texto es "The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)"
esa cadena no está en una codificación particular en absoluto. ¿Qué es, el problema que estás tratando de resolver? ¿Qué quieres decir exactamente con "decodificar"? ¿En qué codificación estaba, creíste? – BalusC