我已经下载了12.1.0 unicode数据,在文件UnicodeData.txt中只有32,841行,所以只有~30k个字符。不知道其他105,088个字符在哪里,我一直找不到它们。想知道他们是在Unihan.zip的某个地方,还是在UCD.zip的某个地方。我似乎找不到这个信息这里。
想知道我用什么文件来结束一个包含所有命名字符的数据库。
发布于 2019-06-05 06:02:05
@CraigBarnes是正确的,UnicodeData.txt包含所有字符。这里有一些证明(Python代码):
import csv
D = {}
with open('UnicodeData.txt',encoding='utf-8-sig') as f:
r = csv.reader(f,delimiter=';')
for line in r:
# Count all the CJK Ideograph and Hangul Syllable ranges and generate names
if ('Ideograph' in line[1] or line[1].startswith('<Hangul')) and line[1].endswith('First>'):
end = next(r)
for i in range(int(line[0],16),int(end[0],16)+1):
D[i] = [line[1][1:-8].upper() + '-' + f'{i:04X}'] + line[2:]
elif line[1][0] == '<':
continue # skip private use and control characters
else:
D[int(line[0],16)] = line[1:] # count everything else as one entry
print(len(D))输出:
137929发布于 2019-06-05 03:39:09
UnicodeData.txt中的一些条目是字符范围,如技术报告中所述。
为了向后兼容,文件
UnicodeData.txt中的范围由范围的起始字符和结束字符的条目指定,而不是由表单“X.Y”指定。开始字符由范围标识符表示,后面跟着逗号和字符串"First",位于尖括号中。此条目取代了该行字段1中的常规字符名。在下一行中用相同的范围标识符表示结束字符,后面跟着逗号和字符串"Last",放在尖括号中:
4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
9FEF;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;换句话说,UnicodeData.txt文件中的行数与数据库中的字符数不一样。一些字符范围由数百个或数千个字符组成,这些字符仅用2行编码。
https://stackoverflow.com/questions/56453936
复制相似问题