2011-07-27 25 views
5

Mối quan hệ có thể có giữa mã hóa chuyển 7bit và UTF-7, cũng như giữa 8bit và UTF-8 là gì?Thông báo mã hóa 7bit và 8bit có phải được giải mã trước khi xuất ra không?

Có ý nghĩa khi chuyển đổi thủ công mã hóa nội dung thư sang dạng mong muốn (giả sử 'utf-8') như trong mã bên dưới?

function decodeBody($body, $transferEncoding, $bodyEncoding) { 

     switch ($transferEncoding) { 

      case '7BIT' : 
      case '8BIT' : 
            // any additional decoding here ? 
       $body = mb_convert_encoding($body, 'utf-8', $bodyEncoding); 
      break; 


      case 'BASE64' : 
       $body = base64_decode($body); 
       $body = mb_convert_encoding($body, 'utf-8', $bodyEncoding); 
      break; 

      case 'QUOTED_PRINTABLE' : 
       $body = quoted_printable_decode($body); 
       $body = mb_convert_encoding($body, 'utf-8', $bodyEncoding); 
      break; 

     } 

     return $body; 
    } 
+0

điều gì đó bạn có thể muốn đọc: http://www.joelonsoftware.com/articles/Unicode.html 'Trích dẫn: Có điều gì đó được gọi là UTF-7, rất giống với UTF-8 nhưng đảm bảo rằng bit cao sẽ luôn là zero' –

Trả lời

3

Trích dẫn các RFC1341:

Các giá trị "8bit", "7bit", và "nhị phân" tất cả ngụ ý rằng NO mã hóa đã được thực hiện ... "8bit" có nghĩa là dòng là ngắn, nhưng có thể có các ký tự không phải ASCII (octet với bộ bit đặt hàng cao).

Điều này có nghĩa là 7bit là ascii tinh khiết và bạn không cần chuyển đổi sang UTF-8 chút nào (vì vậy không cần sử dụng mb_convert_encoding() trong trường hợp đó). '8bit' có nghĩa là các ký tự không phải ascii có thể có mặt, nhưng theo như tôi hiểu, nó không nhất thiết phải được mã hóa bảng mã UTF-8 - có thể là iso-8859-1 hoặc bất kỳ thứ gì. Vì vậy, AFAIK '8bit' không có nghĩa là UTF-8 tự động.

+0

Tôi không phải shure nếu đây là câu trả lời tôi đang tìm kiếm: mã hóa 7bit có nghĩa là ký tự 8 bit được mã hóa với "= F6" (ví dụ). Đó là tất nhiên một mã hóa mà phải được giải mã để in nó vào một trang web hoặc cái gì khác. – iRaS

Các vấn đề liên quan