VNIT

Too lazy to think of a slogan

Trang chủ » Diễn Đàn » Lập trình và Phát triển Web » Java » Lỗi utf-8 khi tách chuỗi trong applet?

Chủ đề đã bị khóa, bạn không thể xóa, sửa hay trả lời trong chủ đề này!

First Page Previous Page  1  Next Page Last Page
Locked Lỗi utf-8 khi tách chuỗi trong applet?
0
question Gởi bởi tsar4ever (4:33 23-08-2011)
Bài: 7 / Điểm VCS: 11 /

public class Temp extends Applet {

    static String in = "UID=MS:S00070, CN=Nguyễn Văn Duyệt, T=RA Operator, OU=Ban VNPT-CA, O=VDC, C=VN";

    public String tach(String s) {
        String result = null;
        try {
            byte[] buf = s.getBytes("UTF-8");
            ByteArrayInputStream bis = new ByteArrayInputStream(buf);
            InputStreamReader isr = new InputStreamReader(bis, "UTF-8");
            StringBuffer sb = new StringBuffer();
            int temp = 0;
            int count = 0;

            while ((temp = isr.read()) != -1) {
                sb.append((char) temp);
                if ((char) temp == ' ') {
                    count++;
                }
                if (count == 0 || count > 3) {
                    sb.delete(0, sb.length());
                } else {
                    result = sb.toString();
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return result.substring(4, result.length() - 1);
    }

    @Override
    public void init() {
        try {
            byte[] s = tach(in).getBytes();
            String str = new String(s, "UTF-8");
            System.out.println("" + str);
        } catch (Exception ex) {
          ex.printStackTrace();
        }
    }


Trong đoạn code trên, mình muốn tách chuỗi đầu vào để lấy được chuỗi con là "Nguyễn Văn Duyệt". Đáng buồn là applet sau khi thực thi cho ra kết quả ở console (hoặc là ở một MessageDialog) là "Nguy?n V?n Duy?t".

Mình đã thử chạy trên 1 class bình thường thì thành công, thế là applet lỗi utf-8? :D
Locked Re: Lỗi utf-8 khi tách chuỗi trong applet?
1
answer Gởi bởi Thành Bá Nguyễn (2:40 24-08-2011)
Bài: 18,319 / Điểm VCS: 17,795 /

Bạn in ra cái chuỗi nguyên gốc trước khi cắt xem thử có bị lỗi đó không đã :-) Nếu cũng bị thì không phải do code của bạn mà có thể là do nơi mà bạn hiển thị không hỗ trợ Unicode (chẳng hạn như console đa phần chỉ hỗ trợ ASCII chứ không hỗ trợ Unicode)
Locked Re: Lỗi utf-8 khi tách chuỗi trong applet?
0
answer Gởi bởi tsar4ever (5:13 24-08-2011)
Bài: 7 / Điểm VCS: 11 /

Mình đã thử show chuỗi ban đầu, nếu hiển thị ở console thì lỗi font nhưng hiển thị ở dialog (bằng lệnh JOptionPanel.showMessageDialog) thì không lỗi.

Còn chuỗi sau tách của mình thì cả ở Dialog cũng lỗi.
Locked Re: Lỗi utf-8 khi tách chuỗi trong applet?
0
answer Gởi bởi quan (18:10 24-08-2011)
Bài: 390 / Điểm VCS: 376 /

Bạn thay byte[] s = tach(in).getBytes(); với byte[] s = tach(in).getBytes("UTF-8");
Locked Re: Lỗi utf-8 khi tách chuỗi trong applet?
0
answer Gởi bởi tsar4ever (5:28 26-08-2011)
Bài: 7 / Điểm VCS: 11 /

Cảm ơn bạn nhiều :)
First Page Previous Page  1  Next Page Last Page

Thống kê

Hiện tại web site có 85,806 thành viên. Xin chào đón thành viên mới nhất nightt.

Các thành viên đã tạo 62,822 chủ đề và 241,950 bài viết trong 30 box.

Hiện có 0 thành viên và 1 khách đang trực tuyến.

Template by styleshout / Icons by Tango Icon Library and FamFamFam.