Red de conocimiento informático - Conocimiento sistemático - Problema de lectura de codificación del navegador

Problema de lectura de codificación del navegador

La conversión fue exitosa, utilizando un método estático para convertir por carácter. Pero es extraño que la cadena constante se pueda convertir directamente usando el método URLDecoder, pero la recibida no se pueda convertir. Convierta la cadena en una matriz de caracteres y extraiga el contenido relevante, puede hacerlo usted mismo. El ejemplo ha sido probado en NetBeans6.5.

prueba de paquete;

importar java.io.InputStream;

importar java.net.URL;

importar java.net. URLConnection;

importar java.net.URLDecoder;

importar java.util.regex.Matcher;

importar java.util.regex.Pattern;

importar java.util.regex.Matcher;

importar java.util.regex.Pattern;

p>

Prueba de clase pública {

public static void main(String[] args) lanza una excepción{

String path7 = "/get_story.php";

URL url = nueva URL(path7);

URLConnection conexión = url.openConnection();

InputStream in = conexión.getInputStream();

// BufferedReader r = nuevo BufferedReader (nuevo InputStreamReader(in));

// String data=null;

byte[] bs=nuevo byte[1024];

int i=0;

// while ((data=r.readLine())!=null) {

while((i=in.read (bs))>0){

Cadena data=new String(bs);

// data=data.replace('\"', ' ');

System.out.println(data);

System.out.println(Test.decodeUnicode(datos));

System.out.println(URLDecoder. decode(datos, "UTF-8"));

// data.replaceAll("\\u", "%");

data=data.substring(1, data.length()-1);//Eliminar []

String tmp[]=data.split(",");//Dividir en matriz

for( int j=0;j

System.out.println(tmp[j]);

// String ret=URLDecoder.decode(tmp [j], "UTF-8");//Conversión de codificación

System.out.println(URLDecoder.decode(tmp[j], "UTF-

8"));

}

System.out.println(URLDecoder.decode("[\"1\u670814\u65e5 \u6821\u53cb\u6362\u80a4\u589e\ u52a0\u9ed1\u8272\u76ae\u80a4\uff0c\u5f70\u663e\u4e2a\u6027\",\"1\u670811\u65e5 \u201c\u6d4b\u8bd5\u201d\u5e94\u7528\u4e0a\u7ebf\ uff0c\u6d4b\ u6d4b\u4f60\u7684\u6027\u683c\",\"1\u67088\u65e5 \u6821\u53cb\u201c\u4e00\u8d77\u56de\u5bb6\u201d\u6d3b\u52a8\u4e0a\u7ebf\",\"1 \ u67086\u65e5 QQ\u6821\u53cb\u793e\u533a\u6b63\u5f0f\u5bf9\u5916\u53d1\u5e03\u4e00\u5468\u5e74\"]","UTF-8"));

}

}

cadena estática pública decodeUnicode(String str) {

Patrón patrón = Pattern.compile("(\\\\u(\\p {XDigit}{4}))");

Matcher matcher = patrón.matcher(str);

char ch;

while (matcher.find ()) {

ch = (char) Integer.parseInt(matcher.group(2), 16);

str = str.replace(matcher.group(1), ch + "");

}

devolver cadena;

}

}