2013-08-21 78 views
3

我在解码某些编码字符时遇到了一些麻烦。 我需要的解码是%E9,我有这样一个字符串,这个d%E9bardeur和DEGR%E9 我在Java类中做什么,如下:将%E9解码为utf8失败

try 
     { 
     System.out.println(o);// test 
     o = URLDecoder.decode((String) o, "UTF-8"); 
     } 
     catch (UnsupportedEncodingException e) 
     { 
     e.printStackTrace(); 
     } 

此操作后,我得到的是

D�bardeur and degr� 

当我不解码为UTF-8

任何意见非常同样的情况? thx

回答

4

%E9不是UTF-8。

解码,这将是正确的方法:

URLDecoder.decode((String) o, "ISO-8859-1") 
1

通过%E9,你可以的意思是在你的字符串,其值是十六进制E9一个字节?因为如果是这样,那么标记为UTF-8中的“多字节”,并且后面还有两个“连续字节”(在正确的范围内)。

因为记住,UTF-8是一个可变长度编码,所以一些码点(字符值)由1个字节表示,一些由2,3等

如果有一个字符串你如遇到UTF-8和E9,接下来的2个字节需要在正确的范围内。例如,在此字符串,00,其如下E9是不是一个有效延续字节:

http://hexutf8.com/?q=0x640x650x670x720xe90x00

在此处,E9在字符串其次正确的2个字节的一个示例:

http://hexutf8.com/?q=0xc20xa90xe90x810xaa

并表示适当的字符。