有几种方法可以获取所有 Unicode 字符名称的列表:例如使用 Python 模块
unicodedata
,如Unicode 字符名称列表中所述,或使用网站:https://unicode .org/charts/charindex.html 但这里不完整,您必须打开并解析 PDF 才能找到名称。
但是所有 Unicode 字符名称的官方来源/存储库是什么?(这样,如果添加新字符,列表就会更新,所以我正在寻找这些名称的初始来源,以机器可读的格式).
我正在寻找仅包含
code point
和 name
的列表,采用 CSV 或任何其他格式:
code character name
...
0102 LATIN CAPITAL LETTER A WITH BREVE
0103 LATIN SMALL LETTER A WITH BREVE
...
实际字符数据(包括字符名称和许多其他详细信息)的官方来源是 Unicode 字符数据库。
最新版本的数据文件可以通过 http://www.unicode.org/Public/UCD/latest/访问。
具体名称可以在文件
NamesList.txt
中找到。该文件的格式在此描述。
这是 CSV 格式的列表:https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt
CSV 文件位于
https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt
每个命名代码点的数据格式如下:
0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
如果你想解析最新的 Unicode 字符名称数据库,这里有一个 Ruby 可以做到这一点:
#!/usr/bin/env ruby
require 'net/http'
uri = URI('https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt')
txt = Net::HTTP.get(uri)
txt.split(/\R/).each{|line|
fields=line.split(/;/)
if fields[1][/<[^>]*>/]
lf=fields[-1][/^N$/] ? "" : fields[-1]
puts "#{fields[0]} #{fields[1]} #{lf}"
else
puts "#{fields[0]} #{fields[1]}"
end
}
或者
curl
和awk
管道:
awk -F";" '
{ sub(/;*$/,""); $1=$1
if ($2~"^<.*>$")
printf "%s %s %s\n", $1, $2, ($NF~"^N$") ? "" : $NF
else
printf "%s %s\n", $1, $2
}' <(curl -s "https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt")
打印:
0000 <control> NULL
0001 <control> START OF HEADING
0002 <control> START OF TEXT
...
0041 LATIN CAPITAL LETTER A
0042 LATIN CAPITAL LETTER B
0043 LATIN CAPITAL LETTER C
...
00C0 LATIN CAPITAL LETTER A WITH GRAVE
00C1 LATIN CAPITAL LETTER A WITH ACUTE
00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
00C3 LATIN CAPITAL LETTER A WITH TILDE
...