我从一个目标网站检索HTML字符串,其中有一个部分
class="f9t" name="Óû§Ãû:ôâÈ»12"
我知道它采用GBK编码,因为我可以从FF浏览器显示中看到它。但我不知道如何将该名称字符串转换为可读的GBK字符串(例如上海或北京)。
我正在使用
String sname = new String(name.getBytes(), "UTF-8");
byte[] gbkbytes = sname.getBytes("gb2312");
String gbkStr = new String( gbkbytes );
System.out.println(gbkStr);
但它没有在GBK文本中打印
???¡ì??:????12
我不知道如何继续。
答案 0 :(得分:1)
如果您已经使用错误的编码读取了名称,并且获得了错误的名称值“Óç§û:ô※12”,您可以试试这个,正如@Karol S建议的那样:
new String(name.getBytes("ISO-8859-1"), "GBK")
或者,如果您从互联网或文件中读取GBK或GB2312字符串,请使用以下内容来获取正确的字符串:
BufferedReader r = new BufferedReader(new InputStreamReader(is,"GBK")); name = r.readLine();
答案 1 :(得分:0)
假设name.getBytes()
返回GBK编码的字符串,它足以创建指定字节数组编码的字符串:
new String(gbkString.getBytes(), "GBK");
关于documentation,加密名称应为GBK
。
示例代码:
String gbkString = "Óû§Ãû:ôâÈ»12";
String utfString = new String(gbkString.getBytes(), "GBK");
System.out.println(utfString);
结果(不是100%确定它是正确的:)): 脱脙禄搂脙没:么芒脠禄12