Unicode 字符名称官方存储库

问题描述 投票:0回答:2

有几种方法可以获取所有 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
...
python string unicode
2个回答
9
投票

实际字符数据(包括字符名称和许多其他详细信息)的官方来源是 Unicode 字符数据库

最新版本的数据文件可以通过 http://www.unicode.org/Public/UCD/latest/访问。

具体名称可以在文件

NamesList.txt
中找到。该文件的格式在此描述

这是 CSV 格式的列表:https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt


0
投票

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
...
© www.soinside.com 2019 - 2024. All rights reserved.