安卓显示Unicode字符到TextView的

问题描述:

我从地址编码Android和处理请求 “http://www.mytvnet.vn/module/ajax/ajax_get_schedule.php?channelId=100&dateSchedule=18%2F01%2F2014安卓显示Unicode字符到TextView的

请求的结果是

" 

06:00<\/strong> Ch\u00e0o bu\u1ed5i s\u00e1ng<\/p> 

06:30<\/strong> Ng\u00e0y m\u1edbi<\/p> 

06:50<\/strong> B\u1ea3n tin Th\u1ecb tr\u01b0\u1eddng<\/p> 

07:00<\/strong> Vi\u1ec7t Nam m\u1ebfn y\u00eau : Kh\u00e1m ph\u00e1 Tr\u00e0ng An<\/p> 

07:20<\/strong> Qu\u00e0 t\u1eb7ng cu\u1ed9c s\u1ed1ng<\/p> 

07:30<\/strong> T\u00ecnh kh\u00fac v\u01b0\u1ee3t th\u1eddi gian<\/p> 

08:00<\/strong> Y h\u1ecdc ph\u01b0\u01a1ng \u0110\u00f4ng : \u0110i\u1ec1u tr\u1ecb b\u1ec7nh \u0111au d\u00e2y th\u1ea7n kinh t\u1ecda<\/p> 

08:30<\/strong> Kh\u00e1m ph\u00e1 : Xanh bi\u1ebfc r\u1eebng Tr\u00e0m<\/p> 

08:50<\/strong> S\u1ed1ng kh\u1ecfe : Ph\u00f2ng ch\u1ed1ng b\u1ec7nh b\u00e9o ph\u00ec<\/p> 

09:10<\/strong> Chuy\u1ec7n \u0111\u00e0n \u00f4ng : L\u1ea5y v\u1ee3 mu\u1ed9n<\/p> 

09:30<\/strong> Vi\u1ec7t nam \u2013 \u0111\u1ea5t n\u01b0\u1edbc, con ng\u01b0\u1eddi : Th\u1ecb x\u00e3 b\u00ean s\u00f4ng B\u00e9<\/p> 

10:00<\/strong> Phim truy\u1ec7n : H\u1ea1nh ph\u00fac mu\u1ed9n m\u00e0ng - t\u1eadp 31<\/p> 

11:00<\/strong> V\u0103n ngh\u1ec7 thi\u1ebfu nhi : Ti\u1ebfng chim l\u00edu lo<\/p> 

11:15<\/strong> Ti\u1ebfng n\u00f3i c\u1eed tri<\/p> 

11:30<\/strong> Th\u1eddi s\u1ef1 VTV Ph\u00fa Y\u00ean<\/p> 

11:45<\/strong> Th\u1ecb tr\u01b0\u1eddng cu\u1ed1i tu\u1ea7n<\/p> 

11:50<\/strong> Phim truy\u1ec7n : M\u1eaft b\u01b0\u1edbm - t\u1eadp 28<\/p> 

12:50<\/strong> K\u00fd \u1ee9c mi\u1ec1n T\u00e2y : D\u1eeba \u01a1i ta nh\u1edb!<\/p> 

13:00<\/strong> Kh\u00e1m ph\u00e1 Vi\u1ec7t Nam : Ba su\u1ed1i c\u00e1 Th\u1ea7n<\/p> 

13:10<\/strong> B\u1ebfp Vi\u1ec7t : V\u1ecbt n\u01b0\u1edbng l\u00e1 l\u1ed1t<\/p> 

13:40<\/strong> Ph\u00f3ng s\u1ef1 : M\u1ed9t ch\u1ee7 tr\u01b0\u01a1ng h\u1ee3p l\u00f2ng d\u00e2n<\/p> 

14:00<\/strong> \u00c2m nh\u1ea1c v\u00e0 B\u01b0\u1edbc nh\u1ea3y<\/p> 

14:30<\/strong> Nh\u1eefng m\u1ea3nh gh\u00e9p cu\u1ed9c s\u1ed1ng : Nh\u1eefng th\u01b0\u01a1ng c\u1ea3ng trong l\u1ecbch s\u1eed Vi\u1ec7t Nam - ph\u1ea7n 8<\/p> 

15:00<\/strong> Phim truy\u1ec7n : C\u00e1 r\u00f4, em y\u00eau em - t\u1eadp 13<\/p> 

16:00<\/strong> V\u0103n ngh\u1ec7 thi\u1ebfu nhi : Gi\u1ea5c m\u01a1 c\u1ed5 t\u00edch<\/p> 

16:25<\/strong> Qu\u00e0 t\u1eb7ng cu\u1ed9c s\u1ed1ng<\/p> 

16:30<\/strong> Phim t\u00e0i li\u1ec7u : H\u1ed9i An \u2013 \u0111\u1ea5t v\u00e0 ng\u01b0\u1eddi<\/p> 

17:00<\/strong> Phim truy\u1ec7n : C\u1ed5 t\u00edch chuy\u1ec7n t\u00ecnh - t\u1eadp 28<\/p> 

18:00<\/strong> \u0110i\u1ec3m h\u1eb9n x\u1ee9 Tr\u1ea7m H\u01b0\u01a1ng<\/p> 

18:20<\/strong> Th\u1ebf gi\u1edbi th\u1ec3 thao<\/p> 

18:30<\/strong> Th\u1eddi s\u1ef1 VTV Ph\u00fa Y\u00ean<\/p> 

19:00<\/strong> Th\u1eddi s\u1ef1 TH Vi\u1ec7t Nam<\/p> 

19:45<\/strong> Caf\u00e9 C\u01b0\u1eddi<\/p> 

19:55<\/strong> Phim truy\u1ec7n : \u0110\u1ed9i \u0111\u1eb7c nhi\u1ec7m Hoa M\u1ed9c Lan \u2013 t\u1eadp 17<\/p> 

20:45<\/strong> Ph\u00f3ng s\u1ef1 : T\u1ebft h\u01b0\u1edbng v\u1ec1 Tr\u01b0\u1eddng Sa<\/p> 

21:00<\/strong> Phim truy\u1ec7n : \u0110\u1ea1i chi\u1ebfn c\u1ed5 kim - t\u1eadp 36<\/p> 

21:45<\/strong> Tin t\u1ee9c<\/p> 

21:50<\/strong> Phim truy\u1ec7n : Cu\u1ed9c chi\u1ebfn c\u00e1c b\u00e0 v\u1ee3 - t\u1eadp 17<\/p> 

22:50<\/strong> Qu\u00e0 t\u1eb7ng cu\u1ed9c s\u1ed1ng<\/p> 

23:00<\/strong> Th\u1ebf gi\u1edbi c\u1eadp nh\u1eadt<\/p> 

23:20<\/strong> Th\u1ebf gi\u1edbi th\u1ec3 thao<\/p> 

23:30<\/strong> T\u00ecnh kh\u00fac v\u01b0\u1ee3t th\u1eddi gian : Mong l\u00e0 gi\u1ea5c m\u01a1<\/p>" 

当我看到从我的代码内容:

String html = ""; 
        InputStream in = response.getEntity().getContent(); 
        BufferedReader reader = new BufferedReader(
          new InputStreamReader(in)); 

       StringBuilder str = new StringBuilder(); 
       String line = null; 
       while ((line = reader.readLine()) != null) { 
        str.append(line); 
       } 
       in.close(); 
       html = str.toString(); 

在TextView的HTML显示仍然是 “Ch\u00e0o bu\u1ed5i s\u00e1ng

我期望的结果是“Chào buổi sáng”。我无法解决这个问题。

另一侧,如果我创建一个字符串

String test = "Ch\u00e0o bu\u1ed5i s\u00e1ng"; 
textView.setText(test); 

那么结果将是Chào buổi sáng

我坚持:(

new InputStreamReader(is, "encoding") 
+0

我试着用新的InputStreamReader(是,“UTF-8”),但它没有工作 – user2532619

你可以试试。结果下面的代码会告诉你为什么你的代码写不工作的原因。

public static void main(String[] argv) { 

    String test = "Ch\u00e0o bu\u1ed5i s\u00e1ng"; 

    System.out.println(unicode2String(test)); 
} 
/** 
* unicode 转字符串 
*/ 
public static String unicode2String(String unicode) { 

    StringBuffer string = new StringBuffer(); 

    String[] hex = unicode.split("\\\\u"); 
    string.append(hex[0]); 
    for (int i = 1; i < hex.length; i++) { 
     // 转换出每一个代码点 
     int data = Integer.parseInt(hex[i], 16); 

     // 追加成string 
     string.append((char) data); 
    } 

    return string.toString(); 
} 

也许你的代码应该如下:

String test = "Ch\u00e0o bu\u1ed5i s\u00e1ng"; 
textView.setText(unicode2String(test));