2012-07-08 3 views
1

Base64는 문자 당 6 비트 (2^6 = 64) 만 사용하여 이미지 파일에서 텍스트 데이터를 만듭니다. 이것은 효율을 떨어 뜨립니다.AJAX 게시물은 8 비트 클린입니까?/Base64/대안과의 관계?/어디 있니?

wikipedia entry on Base64에 따르면이 효율성은 이메일과 같은 8 비트 더러운 것을 방지하는 데 있습니다.

아약스 게시 8 비트 깨끗한가요? 그렇다면 Base64를 사용하는 대안이 있습니까?

php.net (위키 백과와 마찬가지로)은 base64_encode.의 효율이 33 %라고 주장합니다.

답변

2

종류. 모든 JavaScript 문자열은 바이트 문자열이 아닌 UTF-16입니다. send과 함께 데이터를 보내는 경우 전송하기 전에 UTF-8로 인코딩됩니다. 따라서 바이트를 유니 코드 코드 포인트로 변환 한 다음 UTF-8로 인코딩 할 수 있습니다. 서버에 도달하면 UTF-8을 해독 한 다음 코드 포인트를 다시 바이트로 변환해야합니다.

7 비트 데이터의 경우 데이터의 크기가 전혀 확장되지 않습니다. 최상위 비트가 항상 설정되어있는 8 비트 데이터의 경우 데이터 크기가 두 배가됩니다. 가장 중요한 비트가 절반으로 설정된 8 비트 데이터의 경우 데이터 크기가 50 % 증가하므로 Base64 33.3͞ % 증가보다 떨어집니다. XMLHttpRequest Level 2 의지를 사용하는 반면에

, 당신은 ArrayBuffer send, Blob, 또는 FormData를 전달하여 이진 데이터를 보낼 수 있습니다. 그러나 XMLHttpRequest 레벨 2는 최신 브라우저에서만 지원됩니다.

+0

죄송 합니다만 지정하지는 않았지만 이것은 서버의 Base64 이미지 용이었습니다 ... 초기로드시 클라이언트로 전송되었습니다. –

+0

XMLHttpRequest 레벨 2는 서버 (POST Ajax)에서 데이터를 검색하는 데 사용하는 객체이므로 흥미 롭습니다. 그러나 인코딩은 33 % 뒤로 돌려줍니다. b.c. 텍스트 형식의 이미지가 필요합니다. 내 CSS와 연결하여 .... 내 네트워크 요청을 줄이기 위해 하나의 BLOB로. –

+0

@Hiro : 올바르게 이해했다면 AJAX로 이미지를 검색하여 클라이언트가 이미지를 일부 CSS에 추가하여 브라우저가 CSS에서 참조하는 이미지를 가져올 필요가 없다고 말하는 것입니까? 그렇다면 브라우저 내부의 이미지를 가져와 자신의 코드로 가져온 것만 큼 변화했기 때문에 무의미합니다. 요청 수는 동일합니다. – icktoofay

1

AJAX 게시는 해당 측면의 일반 POST 요청과 동일하다고 생각합니다. 그래서 우리는 파일의 내용을 보내기 위해 'multipart/form-data'가 필요합니다. 일반적으로 데이터는 URL을 인코딩하지만, Base64는 (일반적으로)보다 효율적이므로 더 나은 방법 일 수 있습니다.

업데이트 : 다른 방법으로 살펴 보는 것이 도움이 될 수 있습니다.) 7 비트 필터링을 안전하게 통과하려면 값의 스트림이 필요합니다.이 스트림은 모두 8 비트를 차지할 수 있습니다. 완벽한 솔루션은 '7-to-8'인코딩을 사용하는 것이므로 각 7 바이트는 8 '안전'문자가됩니다. 그러나 이러한 7 비트 문자 중 일부는 실제로 스트림에 대한 몇 가지 추가 (메타) 정보를 지정하는 데 사용되므로 적용 할 수 없습니다 ...

이제 딜레마가 발생합니다. 다음 정수 (6 비트 - 즉 base64) - 또는 '비 - 정수'제수가있는 체계를 만들려고 시도하십시오. 이러한 체계가 존재하지만 (예 : Ascii85), 거의 사용되지 않습니다.

+0

나는 7 비트 제어 문자가'POST' 데이터에서 안전하다고 믿는다. – icktoofay

+0

실제로 흥미로운 질문입니다.) POST 데이터가 'x-www-form-urlencoded'로 설정된 Content-Type으로 전송되면 서버는 URL 인코딩되지 않은 것을 가져 오게됩니까? – raina77ow

+0

그리고 'multipart/form-data'와 함께 전송된다면, 우리는 8 비트 청결을 전혀 신경 쓰지 않아도된다는 의미입니다. – raina77ow

관련 문제