09/10/2018, 22:37
Xin bỏ Anh/chị dành chút thời gian (ASP): charset=iso-8859-1
Cho em hỏi vấn đề này :
- trước đây, em viết ASP, dùng csdl: Access2000. trong thẻ <meta> em dùng charset=iso-8859-1 chứ không phải utf-8. em cập nhật CSDL xong, khi load từ csdl ra thì hay bị mất dấu,ví dụ như:
"Nuôi cánh kiến đỏ dưới tán rừng "
thì chuyển thành
"Nui cnh kiến đỏ dưới tn rừng"
Xin các anh chị cho biết cách khắc phục lỗi trên.(mà không phải chuyển qua charset khác vì em đã dùng charset này trong toàn bộ chương trình)
- nhân tiện đây, xin các anh chị cho biết sự khác biệt giữa các charset: utf-8, iso-8859-1, windows 1252, ...
em chân thành cám ơn
- trước đây, em viết ASP, dùng csdl: Access2000. trong thẻ <meta> em dùng charset=iso-8859-1 chứ không phải utf-8. em cập nhật CSDL xong, khi load từ csdl ra thì hay bị mất dấu,ví dụ như:
"Nuôi cánh kiến đỏ dưới tán rừng "
thì chuyển thành
"Nui cnh kiến đỏ dưới tn rừng"
Xin các anh chị cho biết cách khắc phục lỗi trên.(mà không phải chuyển qua charset khác vì em đã dùng charset này trong toàn bộ chương trình)
- nhân tiện đây, xin các anh chị cho biết sự khác biệt giữa các charset: utf-8, iso-8859-1, windows 1252, ...
em chân thành cám ơn
Bài liên quan
- utf-8, windows-1252... là các chuẩn bảng mã cho từng vùng khác nhau, từng quốc gia khác nhau. Gần đây thì thống nhất chung lại 1 bảng mã là Unicode (utf-8, utf-16). Tui chỉ biết sơ sơ có vậy :-)
Vấn đề chuyển mã thì đâu có gì phức tạp đâu, chỉ cần mở các trang web lên bằng fontpage & click phải chọn page properties và chọn tab encoding chọn utf-8 là xong.
Lưu ý: Nếu bạn dùng IIS 5.0 trở lên & utf-8 thì ở đầu trang cần thêm <%Session.CodePage=65001%>
không có sai chạy . Và tôi cũng dùng trong ngôn ngữ Visual Basic (cái này không chịu Unicode), hay trên Net (nó chấp nhận tất cả charset). Theo tôi nghĩ về việc này, bạn hãy xem lại chương trình của bạn .
Riêng về các bảng mã và charset, bạn nên Search lại trên forum này thì sẽ đọc được nhiêu bài hữu ích .
Lý do chính là với 8 bit, mình chỉ có 256 (2 luỹ thừa 8) ký tự mà thôi, trong khi tiếng Việt vơi như'ng kiểu bỏ dấu thanh khác nhau, ta cần hơn 256 ký tự, chính vì vậy ma các bảng mã Việt Nam (không Unicode) khác nhau . Một bảng mã có thể không cho phép bạn gõ một vài chữ hay ký hiệu Anh, Pháp, thì tuỳ theo nhu cầu mà người ta đặt ra nhiều bảng mã khác nhau .
Nêu dùng 16 bits, ta được 65.536 (2 lũy thừa 16) ký tự, như vậy đủ cho ta gõ hết tất cả các chư' và dấu Việt-Nam, luôn chữ Tàu, ả-rập ..., ký hiệu khoa học v.v... Cái này gọi là u-16 : nói chung là cứ mỗi ký tự ta phải cho nó 2 bytes .
Nhận thấy phải xài 2 bytes cho những chữ Anh, Pháp thì uổng, cho nên
người ta mới bày ra utf-8 (Unicode transformed fonts), mà mỗi ký tự có thể có 1 hay nhiêu byte. Ðặc biệt, những bit đầu tiên cho phép ta biết chiều dài của ky tự . Thí dụ : 110... (2 bytes), 1110 (3 bytes) ... và trong một vài trường hợp đặc biệt, một ký tự utf-8 có thể dài 8 bytes.
Bạn có thể tìm hiểu thêm trong site của Ðặng minh Tuấn, hay của Microsoft.