- Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathencodeUTF8.js
More file actions
Latest commit
128 lines (126 loc) · 9.73 KB
/
Copy pathencodeUTF8.js
File metadata and controls
128 lines (126 loc) · 9.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
// This is free and unencumbered software released into the public domain.
/*
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1106),"А");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(8216),"Б");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(8217),"В");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(8220),"Г");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(8221),"Д");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(8226),"Е");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(8211),"Ж");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(8212),"З");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(152),"И");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(8482),"Й");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1113),"К");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(8250),"Л");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1114),"М");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1116),"Н");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1115),"О");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1119),"П");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(160),"Р");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1038),"С");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1118),"Т");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1032),"У");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(164),"Ф");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1168),"Х");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(166),"Ц");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(167),"Ч");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1025),"Ш");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(169),"Щ");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1028),"Ъ");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(171),"Ы");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(172),"Ь");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(173),"Э");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(174),"Ю");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1031),"Я");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(176),"а");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(177),"б");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1030),"в");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1110),"г");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1169),"д");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(181),"е");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(182),"ж");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(183),"з");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1105),"и");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(8470),"й");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1108),"к");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(187),"л");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1112),"м");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1029),"н");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1109),"о");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(1111),"п");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(1026),"р");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(1027),"с");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(8218),"т");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(1107),"у");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(8222),"ф");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(8230),"х");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(8224),"ц");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(8225),"ч");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(8364),"ш");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(8240),"щ");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(1033),"ъ");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(8249),"ы");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(1034),"ь");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(1036),"э");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(1035),"ю");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(1039),"я");
СоответствиеПерекодировки.Вставить(Символ(1056) + Символ(1027),"Ё");
СоответствиеПерекодировки.Вставить(Символ(1057) + Символ(8216),"ё");
*/
// Marshals a string to an Uint8Array.
functionencodeUTF8(s){
vari=0,bytes=newUint8Array(s.length*4);
for(varci=0;ci!=s.length;ci++){
varc=s.charCodeAt(ci);
if(c<128){
bytes[i++]=c;
continue;
}
if(c<2048){
bytes[i++]=c>>6|192;
}else{
if(c>0xd7ff&&c<0xdc00){
if(++ci>=s.length)
thrownewError('UTF-8 encode: incomplete surrogate pair');
varc2=s.charCodeAt(ci);
if(c2<0xdc00||c2>0xdfff)
thrownewError('UTF-8 encode: second surrogate character 0x'+c2.toString(16)+' at index '+ci+' out of range');
c=0x10000+((c&0x03ff)<<10)+(c2&0x03ff);
bytes[i++]=c>>18|240;
bytes[i++]=c>>12&63|128;
}elsebytes[i++]=c>>12|224;
bytes[i++]=c>>6&63|128;
}
bytes[i++]=c&63|128;
}
returnbytes.subarray(0,i);
}
// Unmarshals a string from an Uint8Array.
functiondecodeUTF8(bytes){
vari=0,s='';
while(i<bytes.length){
varc=bytes[i++];
if(c>127){
if(c>191&&c<224){
if(i>=bytes.length)
thrownewError('UTF-8 decode: incomplete 2-byte sequence');
c=(c&31)<<6|bytes[i++]&63;
}elseif(c>223&&c<240){
if(i+1>=bytes.length)
thrownewError('UTF-8 decode: incomplete 3-byte sequence');
c=(c&15)<<12|(bytes[i++]&63)<<6|bytes[i++]&63;
}elseif(c>239&&c<248){
if(i+2>=bytes.length)
thrownewError('UTF-8 decode: incomplete 4-byte sequence');
c=(c&7)<<18|(bytes[i++]&63)<<12|(bytes[i++]&63)<<6|bytes[i++]&63;
}elsethrownewError('UTF-8 decode: unknown multibyte start 0x'+c.toString(16)+' at index '+(i-1));
}
if(c<=0xffff)s+=String.fromCharCode(c);
elseif(c<=0x10ffff){
c-=0x10000;
s+=String.fromCharCode(c>>10|0xd800)
s+=String.fromCharCode(c&0x3FF|0xdc00)
}elsethrownewError('UTF-8 decode: code point 0x'+c.toString(16)+' exceeds UTF-16 reach');
}
returns;
}