Bị lỗi font khi get content vào mysql

Discussion in 'Thảo Luận Chung' started by paduc83, Apr 12, 2022.

  1. paduc83

    paduc83 Tân Thủ Thôn

    Các bác giúp mình với.
    Mình dùng PHP file_get_contents hoặc Curl để load dữ liệu vào data nhưng làm nhiều cách trang web toàn hiển thị lỗi font chữ kiểu ntn " người ai Ä‘ang dùng misa sme 2017 có thấy khó chịu cái mục thuế xuất nà y"
    Các bác giúp với nhé
     

    Attached Files:

  2. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Có ba lưu ý để fix lỗi này, e cần kiểm tra nhé.
    1. Trong file config đến database. Tùy theo e sử dụng mysql_query hay mysqli_query (tùy code)
    Code:
    $conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
    mysqli_query($conn,"SET CHARACTER SET 'utf8'");
    mysqli_query($conn,"SET SESSION collation_connection ='utf8_unicode_ci'");
    
    2.. Phần curl để load dữ liệu vào data lên thêm $value = htmlspecialchars_decode($value) .
    3. Phần Collation em để vậy cũng ok, a thì thường đặt là utf8mb4_general_ci

    Em kiểm tra 3 vấn đề trên, nếu không được thì inbox cho anh.
    Nhưng anh nghĩ là em làm được thôi.
     
    Nai likes this.
  3. paduc83

    paduc83 Tân Thủ Thôn

    Những dòng có dữ liệu dạng mặt cười này thì ko insert vào được anh ạ. nó bào lỗi
    "Incorrect string value: '\xF0\x9F\x98\xB5\xE2\x80..."
    Còn dòng không có mặt cười thì vào ok rồi
     

    Attached Files:

  4. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    Chỗ này ko liên quan đến thớt e hỏi nhưng a sẽ trả lời cho em. Lần sau lưu ý nhé. Hỏi thì viết hết ra.
    trước khi insert vào database thì cần loại bỏ một chút như sau:

    Code:
    $value = preg_replace('/[\x00-\x1F\x7F-\xFF]/', '', $value);
    $value = htmlentities(addslashes(htmlspecialchars_decode($value)));
    Khi echo ra thì
    Code:
    $value = html_entity_decode(stripslashes($value)); 
    Học php cho ngon lành vào nhá.{cheers}
     
    paduc83 likes this.
  5. Tony Vu

    Tony Vu Bang Chúng

    Mấy ký tự này gọi là emoticon, muốn insert được vào DB MySQL thì chọn charset utf8mb4 là được nhé
     
    paduc83, Nai and congloi like this.
  6. paduc83

    paduc83 Tân Thủ Thôn

    Tks bác