unsigned char 데이터 타입이 따로 없는 php와 jscript(유니코드)
아무래도 정답은 UTF-8로 모든 웹문서를 만드는 것.
그와 더불어 기타 php의 encode, decode api와 호환되는 jscript 함수를 만들면 유용할 것 같다.
이번기회에 하나씩 제작해보실,
0. urlencode, urldecode.
1. utf8_encode, utf8_decode함수와 호환되는 jscript제작.
2. base64_encode, base64_decode
[CODE] /******************************************** * base64 ********************************************/ var base64 = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', // 0 to 7 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', // 8 to 15 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', // 16 to 23 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', // 24 to 31 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', // 32 to 39 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', // 40 to 47 'w', 'x', 'y', 'z', '0', '1', '2', '3', // 48 to 55 '4', '5', '6', '7', '8', '9', '+', '/' ]; // 56 to 63 function reverseBase64 () { var r = new Object(); for (var i = 0; i < 64; i++) { r[base64[i]] = i; } return r; } var reversedBase64 = reverseBase64(); function decode (encStr) { var charCodes = new Array(); var decStr = ""; for (var i = 0; i < encStr.length; i++) charCodes[i] = reversedBase64[encStr.charAt(i)]; for (var i = 0; i < encStr.length; i += 4) { var bits24 = ( charCodes [i] & 0xFF ) << 18; bits24 |= ( charCodes [i + 1] & 0xFF ) << 12; bits24 |= ( charCodes [i + 2] & 0xFF ) << 6; bits24 |= ( charCodes [i + 3] & 0xFF ) << 0; decStr += String.fromCharCode((bits24 & 0xFF0000) >> 16); if (charCodes[i + 2]) decStr += String.fromCharCode((bits24 & 0xFF00) >> 8); if (charCodes[i + 3]) decStr += String.fromCharCode((bits24 & 0xFF) >> 0); } return decStr; } [/CODE]
아무래도 정답은 UTF-8로 모든 웹문서를 만드는 것.
그와 더불어 기타 php의 encode, decode api와 호환되는 jscript 함수를 만들면 유용할 것 같다.
이번기회에 하나씩 제작해보실,
0. urlencode, urldecode.
1. utf8_encode, utf8_decode함수와 호환되는 jscript제작.
2. base64_encode, base64_decode
[CODE] /******************************************** * base64 ********************************************/ var base64 = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', // 0 to 7 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', // 8 to 15 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', // 16 to 23 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', // 24 to 31 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', // 32 to 39 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', // 40 to 47 'w', 'x', 'y', 'z', '0', '1', '2', '3', // 48 to 55 '4', '5', '6', '7', '8', '9', '+', '/' ]; // 56 to 63 function reverseBase64 () { var r = new Object(); for (var i = 0; i < 64; i++) { r[base64[i]] = i; } return r; } var reversedBase64 = reverseBase64(); function decode (encStr) { var charCodes = new Array(); var decStr = ""; for (var i = 0; i < encStr.length; i++) charCodes[i] = reversedBase64[encStr.charAt(i)]; for (var i = 0; i < encStr.length; i += 4) { var bits24 = ( charCodes [i] & 0xFF ) << 18; bits24 |= ( charCodes [i + 1] & 0xFF ) << 12; bits24 |= ( charCodes [i + 2] & 0xFF ) << 6; bits24 |= ( charCodes [i + 3] & 0xFF ) << 0; decStr += String.fromCharCode((bits24 & 0xFF0000) >> 16); if (charCodes[i + 2]) decStr += String.fromCharCode((bits24 & 0xFF00) >> 8); if (charCodes[i + 3]) decStr += String.fromCharCode((bits24 & 0xFF) >> 0); } return decStr; } [/CODE]