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 可以使用的編碼有三種,分別是...