Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
|
|
@ -0,0 +1,62 @@
|
|||
sysconf hex_numbers
|
||||
func$ utf8dec b[] .
|
||||
ind = 1
|
||||
while ind <= len b[]
|
||||
n = b[ind]
|
||||
if n < 0x80
|
||||
cnt = 0
|
||||
elif n >= 0xf0
|
||||
cnt = 3
|
||||
n = bitand n 0x7
|
||||
elif n >= 0xe0
|
||||
cnt = 2
|
||||
n = bitand n 0xf
|
||||
elif n >= 0xc0
|
||||
cnt = 1
|
||||
n = bitand n 0x1f
|
||||
else
|
||||
return ""
|
||||
.
|
||||
for i = 1 to cnt
|
||||
h = b[ind + i]
|
||||
if bitand h 0xc0 <> 0x80 : return ""
|
||||
h = bitand h 0x3f
|
||||
n = n * 64 + h
|
||||
.
|
||||
ind += cnt + 1
|
||||
res$ &= strchar n
|
||||
.
|
||||
return res$
|
||||
.
|
||||
func[] utf8enc s$ .
|
||||
for c$ in strchars s$
|
||||
c = strcode c$
|
||||
if c < 0x80
|
||||
cnt = 0
|
||||
pre = 0
|
||||
elif c < 0x800
|
||||
cnt = 1
|
||||
pre = 0xc0
|
||||
elif c < 0x10000
|
||||
cnt = 2
|
||||
pre = 0xe0
|
||||
elif c < 0x200000
|
||||
cnt = 3
|
||||
pre = 0xf0
|
||||
else
|
||||
return [ ]
|
||||
.
|
||||
for i to cnt + 1 : r[] &= 0
|
||||
for i = 0 to cnt - 1
|
||||
l = c mod 0x40 + 0x80
|
||||
c = c div 0x40
|
||||
r[$ - i] = l
|
||||
.
|
||||
r[$ - i] = c + pre
|
||||
.
|
||||
return r[]
|
||||
.
|
||||
for c$ in [ "A" "ö" "Ж" "€" "𝄞" "你好 😊" ]
|
||||
b[] = utf8enc c$
|
||||
print c$ & " -> " & b[] & " -> " & utf8dec b[]
|
||||
.
|
||||
Loading…
Add table
Add a link
Reference in a new issue