독자 여러분, 안녕하세요. 나는 최근에 발견 한 자바 스크립트 함수를 사용하고 싶습니다. LZW는 문자열을 압축합니다. . 이 기능은 실제로 매우 잘 작동javascript lzw 압축 용 문자 사전
function lzw_encode(s) {
var dict = {};
var data = (s + "").split("");
var out = [];
var currChar;
var phrase = data[0];
var code = 256;
for (var i=1; i<data.length; i++) {
currChar=data[i];
if (dict[phrase + currChar] != null) {
phrase += currChar;
}
else {
out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0));
dict[phrase + currChar] = code;
code++;
phrase=currChar;
}
}
out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0));
for (var i=0; i<out.length; i++) {
out[i] = String.fromCharCode(out[i]);
}
return out.join("");
}
, 유일한 문제 필자가있어 내가 때마다 WebSocket을 통해 추가적인 인코딩 (Base64로 예를 들면)하지만 나던 작업없이 인코딩 된 문자열을 전송하려는 것입니다. 때때로 압축 된 문자열에 웹 소켓을 통해 전송 될 수없는 문자가있는 경우 문자열에 잘못된 문자가있는 자바 스크립트 오류가 발생합니다. 그래서 제 생각은 압축을 위해 사용 되어야만하는 "화이트리스트 (whitelist)"와 같은 인코딩 과정에서 허용되는 문자만을 사용하는 것이 었습니다. 내가 코드 에서 이해 한 것은 그 숫자의 charCode를 취하는 것입니다. 그래서 저는 제 자신의 charCodeSet을 만들 수는 있지만 실제로 구현하는 방법과 그것이 작동하는지조차 모릅니다.
- Q1 : 내 lzw 인코딩은 정의한 문자열의 문자 만 사용합니다.
- Q2 : websocket이 전송하고 싶지 않은이 중국어, 아랍어 및 제어 문자를 어떻게 "http/s"전송할 수 있습니까?
Websocket message contains invalid character(s). Uncaught Error: SYNTAX_ERR: DOM Exception 12
갱신 1 : 그런데
,이 크롬 던지고 오류가 당신이 디코딩 기능이 여기
function lzw_decode(s) {
var dict = {};
var data = (s + "").split("");
var currChar = data[0];
var oldPhrase = currChar;
var out = [currChar];
var code = 256;
var phrase;
for (var i=1; i<data.length; i++) {
var currCode = data[i].charCodeAt(0);
if (currCode < 256) {
phrase = data[i];
}
else {
phrase = dict[currCode] ? dict[currCode] : (oldPhrase + currChar);
}
out.push(phrase);
currChar = phrase.charAt(0);
dict[code] = oldPhrase + currChar;
code++;
oldPhrase = phrase;
}
return out.join("");
}
를 aswell 보면 그것의 helpfull 수 있지만 내가 내 사용자 정의 charset도 구현해야할까요? ...
내가 조언을 뵙죠 매우 많은 일을, 난 LZW를 사용하여 한 이유는 기능과 높은 압축률과 단순함에 비해 효과 및 사용되지 않습니다 50 % 더 작은 결과 이미지 덩어리의 비율에 도달하는 것처럼, 나는이 압축을 이미지 업로드와 서버 측에서 다시 압축을 풉니 다. 왜냐하면 내 응용 프로그램에서는 다양한 이미지를 한 번에 업로드 할 수있는 가능성을 부여하기 때문입니다. 압축을 수행하면 전체 프로세스가 빨라지고 모든 작업이 조금 원활 해 지므로 이전에 압축하여 시간을 업로드하는 것으로 계산됩니다. 나는 zlib 자바 스크립트 lib – beist87
을 사용하는 "단순한"것을 찾지 못했지만 지금은 huffman 압축을 사용하고 있지만 huffman은 단지 최대 30 %를 압축 할 수 있습니다. 전반적으로 클라이언트가 업로드하기 전에 무언가를 압축하도록하는 것이 좋지 않습니까? 나는 혁신적인 종류의 – beist87
http://nodejs.org/가 자바 스크립트 zlib 인터페이스를 제공한다고 생각했습니다. –