SandboXP

Форк
0
/
utf8.js 
63 строки · 1.4 Кб
1
// -------------------------------------------------
2
// ------------------ UTF8 Helpers -----------------
3
// -------------------------------------------------
4

5
"use strict";
6

7
var UTF8 = {};
8

9
/** @constructor */
10
function UTF8StreamToUnicode() {
11

12
    this.stream = new Uint8Array(5);
13
    this.ofs = 0;
14

15
    this.Put = function(key) {
16
        this.stream[this.ofs] = key;
17
        this.ofs++;
18
        switch(this.ofs) {
19
            case 1:
20
                if (this.stream[0] < 128) {
21
                    this.ofs = 0;
22
                    return this.stream[0];
23
                }
24
                break;
25

26
            case 2:
27
                if ((this.stream[0]&0xE0) == 0xC0)
28
                if ((this.stream[1]&0xC0) == 0x80) {
29
                    this.ofs = 0;
30
                    return ((this.stream[0]&0x1F)<<6) | (this.stream[1]&0x3F);
31
                }
32
                break;
33

34
            case 3:
35
                break;
36

37
            case 4:
38
                break;
39

40
            default:
41
                return -1;
42
                //this.ofs = 0;
43
                //break;
44
        }
45
        return -1;
46
    };
47
}
48

49
function UnicodeToUTF8Stream(key)
50
{
51
        if (key < 0x80)  return [key];
52
        if (key < 0x800) return [0xC0|((key>>6)&0x1F), 0x80|(key&0x3F)];
53
}
54

55
UTF8.UTF8Length = function(s)
56
{
57
    var length = 0;
58
    for(var i=0; i<s.length; i++) {
59
        var c = s.charCodeAt(i);
60
        length += c<128?1:2;
61
    }
62
    return length;
63
};
64

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.