2010-09-02 6 views
6

Tôi có mẫu đơn này:UTF-8 không làm việc trong HTML tạo

<form method="post" enctype="multipart/form-data" accept-charset="UTF-8"> 

Nhưng khi tôi gửi một nhân vật é, nó quay nó vào © Ã.

Tại sao tính năng này không hoạt động? Có, cơ sở dữ liệu MySQL có tất cả các bộ ký tự được thiết lập chính xác. (Cơ sở dữ liệu, bảng.) Nếu tôi đặt thủ công nó trong cơ sở dữ liệu với Navicat, nó sẽ hiển thị tốt trên trang web.

Ngoài ra, tôi đã thử thẻ meta, đặt tiêu đề loại nội dung, không thành công.

+0

How are you đặt dữ liệu mẫu vào cơ sở dữ liệu? Ngôn ngữ phía máy chủ của bạn có giữ được UTF-8 không? – Oded

+0

Bạn có đang phục vụ trang của mình dưới dạng UTF-8 khi bạn hiển thị lại cho người dùng không? Kiểm tra xem thẻ meta và tiêu đề của bạn có phù hợp không. – notJim

+0

Tất cả các trường đi qua mysql_real_escape_string và sau đó được đưa vào cơ sở dữ liệu bằng truy vấn này: mysql_query ("UPDATE' users' SET 'Profile' = '". $ NewProfile. "',' Avatar' = '". Mysql_real_escape_string ($ avatar). "'WHERE' ID' = ". $ thisUser [' ID ']); – Codecat

Trả lời

8

Trong HTML của bạn, hãy thêm thẻ meta này:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> 

Ngoài ra thêm tiêu đề PHP này ở đầu của kịch bản:

header("Content-Type: text/html;charset=UTF-8"); 

[EDIT]:

Một mẹo nữa là lưu tệp dưới dạng mã hóa UTF-8 without BOM. Bạn có thể sử dụng Notepad++ hoặc bất kỳ trình soạn thảo phong nha nào để thực hiện điều đó.

+1

Có cả hai, không thay đổi bất cứ điều gì. – Codecat

+0

Bạn có 'tiêu đề' ở đầu trang HTML có biểu mẫu không? – shamittomar

+0

Có. * các ký tự phụ * – Codecat

1

Đảm bảo bạn đã thiết lập đối chiếu kết nối của bạn để utf8:

SET NAMES utf8 
+0

Đã thực hiện việc này. – Codecat

+0

Trang có phải là utf-8 không? Ngoài ra, bạn có thử một trình duyệt/máy khác không? – aularon

+0

Tôi vừa thử Internet Explorer, cùng một vấn đề. Những người dùng khác cũng gặp phải sự cố này. – Codecat