Nim 處理Unicode UTF 8編碼

2021-07-04 18:23:51 字數 2497 閱讀 8034

unicode 模組提供支援處理unicode、 utf - 8編碼。

type

runeimpl = int

rune* = distinct runeimpl                ##可以容納任何 unicode 字元 型別。

rune16* = distinct int16                   ##16位 unicode 字元

proc

runelen(s

:string):

int

#返回utf-8字串s 所表示的unicode字元個數。

proc

runelenat(s

:string;i

:natural):

int#這裡的第二個引數是s[i] 所指的位元組,根據utf8儲存的特點,如果str[i]指向乙個字元utr8碼的頭部,

#則返回這個字元所佔位元組數,否則返回1。

proc

validateutf8(s

:string):

int#返回字串s中第乙個不是utf8碼的字元位置,否則返回-1。

proc

runeat(s

:string;i

:natural):

rune

#如果第二個引數是乙個utf8碼字元的開頭索引(str[i]),則返回該字元的unicode碼。否則返回rune(ord(str[i]))

proc

toutf8(c

:rune):

string

#將乙個unicode 字元轉化為其utf8表示

proc

reversed(s

:string):

string

#反轉字串

迭代器:

iterator

runes(s

:string):

rune

例:

import unicode,encodings

var str = "字串"

echo len(str) #返回儲存字串所用的位元組數。 str[0]是指向字串str第乙個位元組。

echo runelen(str)

echo runelenat(str,0)

echo runelenat(str,1)

echo validateutf8(str)

var strcov = convert(str,"gb2312","utf-8")

echo validateutf8(strcov)

var str2 = str & strcov

echo validateutf8(str2)

var index:rune

index = runeat(str,0)

echo int(index)

var varu = rune(0x6768) #楊的unicode碼 0x6768

echo toutf8(varu) #將乙個rune轉化為其utf8表示

echo convert(toutf8(varu),"gb2312","utf-8") #轉為gb2312碼

echo rune(0x6768)

#過程echo定義為proc echo(x: varargs[expr, `$`]),在unicode模組裡,過載了`$`,使引數轉換為utf8表示。

var

yrs:seq[rune] #proc `$`(rune: rune): string

yrs = @[runeat(str,0),runeat(str,3),runeat(str,6)] #proc `$`(runes: seq[rune]): string

echo yrs," ", str

for i in runes str: #runes 是乙個字串的迭代器。i是以rune型別迭代。遍歷任何 字串s 的unicode 字元

echo i

echo reversed(str)

注意:在windows下輸出的可能會是亂碼,因為程式處理的是utf-8字串,系統簡體中文的編碼為gb2313,所以會出現亂碼,可以通過轉碼來解決。

pyhton關於編碼Unicode,utf 8

1.unicode和utf 8 簡單來說 unicode 是 字符集 utf 8 是 編碼規則 是unicode的實現方式。在計算機記憶體中,統一使用unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為utf 8編碼。python3 記憶體中使用的字串全部是 unicode 碼,但是網路...

階梯NIM和樹上NIM

有 n 個位置 1.n 每個位置上 a i 個石子。有兩個人輪流操作。操作步驟是 挑選 1.n 中任一乙個存在石子的位置 i 將至少1個石子移動至 i 1 位置 也就是最後所有石子都堆在在0這個位置 誰不能操作誰輸。求先手必勝還是必敗。問題等價於,求位置為奇數的 a i 的異或和,若異或和等於0,則...

對於Unicode,UTF系列的理解

unicode簡單來說就是字符集,涵蓋了世界上所有字元的一本 字典 這些上百萬的字元儲存都是靠很多個1和0實現的即所謂的 那麼在計算機執行中,怎麼智慧型地把字典中的文字 翻譯成我們熟知的文字語言呢,那麼就需要 翻譯工具 utf系列就是這樣的編碼 翻譯工具 unicode 可以使用的編碼有三種,分別是...