我试图将脚本的输出写入file.txt,但当我写入阿拉伯字符时,文件的输出是从右向左写入的
这是我的脚本:
import unicodedata
import sys
from tabulate import tabulate
headers=["Unicode Point", "Character in UTF-8 + length", "Character normalized + legth"]
data = []
f = open('multiplierNFD.txt', 'a', encoding='utf8')
for i in range (sys.maxunicode + 1):
uni = chr(i)
char8 = uni.encode('utf8', 'ignore').decode('utf8', 'ignore')
char8norm = unicodedata.normalize('NFKC', char8)
if len(char8) != len(char8norm):
if i < 65535:
str1 = "U+" + str(hex(i))[2:].rjust(4,'0')
else:
str1 = "U+" + str(hex(i))[2:].rjust(8,'0')
str2 = char8 + " ---> " + str(len(char8))
str3 = char8norm + " ---> " + str(len(char8norm))
data.append([str1, str2, str3])
f.write(tabulate(data, headers=["Unicode Point", "Character in UTF-8 + length", "Character normalized + legth"]))
这是输出的示例:
U+fb16 ﬖ ---> 1 վն ---> 2
U+fb17 ﬗ ---> 1 մխ ---> 2
U+fb1d יִ ---> 1 יִ ---> 2
U+fb1f ײַ ---> 1 ײַ ---> 2
U+fb2a שׁ ---> 1 שׁ ---> 2
如何避免这种情况,并像前两行那样打印/保存输出
将字符从左向右换行:
输出样本:
我还对代码进行了一些清理,并输出UTF-8长度,如标题所示,而不是代码点长度。不要将Unicode代码点与UTF-8编码混淆。例如,这不起任何作用:
所有代码点都可以用UTF8编码,因此没有什么可以忽略的,解码会再次将其转换回原始字符,因此代码中的
uni == char8
相关问题 更多 >
编程相关推荐