Vấn đề font tiếng việt khi Crawl content

Discussion in 'Thảo Luận Chung' started by Victor nguyen, Aug 8, 2017.

  1. Victor nguyen

    Victor nguyen Khách Qua Đường

    Chào mừng forum, em xin đưa câu hỏi trực tiếp lên đây luôn ạ.
    Chả là em có crawl 1 link bằng php, dùng simple_html_dom, có đặt cả <meta charset="utf-8" /> vào rồi, nhưng có link sau khi crawl vẫn bị lỗi font.
    Cụ thể, em thử link này: http://www.dieutri.vn/dalieu/9-10-2014/s5193/zona-than-kinh-herpes-zoster.htm
    Kiểm tra source code vẫn có <meta charset="utf-8" />

    abc3.png


    Em xem trong bài viết thì ok, không bị lỗi font (ví dụ chữ "Mất tầm nhìn" trong ô đỏ đấy, không bị lỗi font.

    abc1.png

    Nhưng kiểm tra trong source code thì lỗi ngay (thành ký tự: Mất tầm nh&igrave;n),
    abc2.png

    Và nhiều phần khác trong nội dung cũng thế.
    Chính vì nó bị từ source code thế nên khi crawl về thì em cũng bị luôn bộ font như vậy.
    Các bác giúp em làm sao để khắc phục được không ạ.
    Thanks
     
  2. Victor nguyen

    Victor nguyen Khách Qua Đường

    PS: Em kiểm tra xem có font khác không thì chỉ thấy có font-family:"Times New Roman"; trong source code của link thôi :(
     
  3. gu gồ

    gu gồ Administrator Staff Member

    chắc bên site nguồn copy từ file word vào
     
    Victor nguyen likes this.
  4. bmt

    bmt Sơ Nhập Giang Hồ

    Nếu php thì dùng lệnh html_entity_decode để xử ký nhé
    PHP:
    echo html_entity_decode('Mất tầm nh&igrave;n');
     
    Victor nguyen and lite2210 like this.
  5. Sói

    Sói Administrator Staff Member

    Giải thích về vấn đề ngôn ngữ trong lập trình thì khá dài và phức tạp phết và liên quan nhiều thứ như database lưu trữ, code xử lý, trình duyệt hiển thị, .... Cái vấn đề thớt hỏi nó không phải lỗi font mà đó là do chủ site họ lưu text không phải bằng unicode, cụ thể ở đây có lẽ họ lưu theo chuẩn iso 8859 thì phải. Nên khi view html thấy mấy cái mã hoá lạ hoắc, đó là cho các dấu huyền sắc nặng hỏi ... của tiếng Việt. Còn trình duyệt nhìn vẫn bình thường là do nó tự chuyển lại theo charset utf-8 qui định trên header. Khi mình crawl là lấy về html nên bị dính mã encode. Giải pháp thì như trên đã nói, decode nó ra là xong. Ngôn ngữ lập trình nào cũng có hàm decode cả. Tự tìm là ra dc, ví dụ như; html entity decode, utf8 decode, ...
     
    Last edited: Aug 9, 2017
    Victor nguyen and Nai like this.
  6. Nai

    Nai MiddleMan Staff Member

    Cụ Sói nói đúng rồi bác, như một số web mình quản trị khi soi HTML thì nó ra ký tự lạ giống như là encode của bên file XML trên blogspot vậy, nhưng khi hiển thị ở website thì đều bình thường. CÒn về vấn đề bóc tách ra thì may mắn là các site mình cần lấy dữ liệu ra đều ổn hết nên chưa gặp khó khăn
     
    Victor nguyen likes this.
  7. Victor nguyen

    Victor nguyen Khách Qua Đường

    khi lấy content thì bị lỗi các dấu tiếng việt, em up ngược lại wordpress thì vẫn hiển thị ok. Nhưng có cách nào sửa được để lưu vào txt không bị lỗi không.
    em dùng html_entity_decode($content) thì nó chỉ hiển thị được trên site ko bị lỗi thôi, còn lưu vào txt vẫn lỗi. Như vậy em muốn lấy để chuyển sang blogspot thì không được. Bác @Nai giúp em cách decode để up lên blogspot với.