带圈数字符号0-100和unicode编码

1. 带圈字符

🄋 (这个是带圈的0,浏览器显示字符和word显示字符会有所差异)
①②③④⑤⑥⑦⑧⑨⑩

⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳

㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚

㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵

㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿


2. 带圈字符背后原理(0-50之后的带圈数字支持)

参考:Unicode Circled Numbers

  • 一开始也是想直接找到0-100的带圈数字,但是感谢百度问答-带圈数字。激发了我这个伪程序员的热情。
  • 另,发现word里使用带圈数字复制到网页中,会变成这样○51
  • 然后就继续寻找。感谢unicode组织的文档,点击这里
    在这里插入图片描述

大意就是:

  • 带圈字符0的unicode编码是24EA,
  • 带圈字符1-20的unicode编码是2460~2473
  • 带圈字符21-35的unicode编码是3251-325F
  • 带圈字符36-50的unicode编码是32B1~32BF
  • 黑色带圈字符0的unicide编码是24FF
  • 黑色带圈字符1-10的unicode编码是2776~277F
  • 黑色带圈字符11-20的unicode编码是24EB~24F4

后续对50-100的支持,还是一个提案,而且是5位unicode编码。需要使用\U1F1B0这样的编码,

  • 而目前大部分浏览器和IDE都只支持\u240A这样的字符。
  • 因此以图片形式存在的带圈字符是可以的,但是以可编码字符存在的是无法在互联网上传播的(word内置的支持也只在word中有效)
    在这里插入图片描述
    在这里插入图片描述
    尝试:stackoverflow的回答:How to display 5 digit unicode characters such as a speaker /u1f50a
    但是浏览器不支持很多显示,所以即便可以拆解这个字符,也没办法正常显示

3. unicode字符打印

直接用unicode字符打印,把1-100这些数字都给打印出来(🤐 然而带圈数字只有1-20是连续的),后面就是其他字符了。。

start=int('0x2460',16)  # 字符串转换成16进制整数
print(start)  # 9312
for i in range (100):
    hex_digit=hex(start)
    hex2unicode=("\\u"+hex_digit.split('x')[1]).encode().decode('unicode_escape')
    print(hex2unicode)
    start+=1    

打印出来是这样的

①②③④⑤⑥⑦⑧⑨⑩

⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳

⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽

⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇

⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑

⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛

⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥

⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯

⒰⒱⒲⒳⒴⒵ⒶⒷⒸⒹ

ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃ

然后我又试探性的往后看了看,还挺好玩的

▌▍▎▏▐░▒▓▔▕

▖▗▘▙▚▛▜▝▞▟

■□▢▣▤▥▦▧▨▩

▪▫▬▭▮▯▰▱▲△

▴▵▶▷▸▹►▻▼▽

▾▿◀◁◂◃◄◅◆◇

◈◉◊○◌◍◎●◐◑

◒◓◔◕◖◗◘◙◚◛

◜◝◞◟◠◡◢◣◤◥

◦◧◨◩◪◫◬◭◮◯
◰◱◲◳◴◵◶◷◸◹

◺◻◼◽◾◿☀☁☂☃

☄★☆☇☈☉☊☋☌☍

☎☏☐☑☒☓☔☕☖☗

☘☙☚☛☜☝☞☟☠☡

☢☣☤☥☦☧☨☩☪☫

☬☭☮☯☰☱☲☳☴☵

☶☷☸☹☺☻☼☽☾☿

♀♁♂♃♄♅♆♇♈♉

♊♋♌♍♎♏♐♑♒♓

对于这些unicode字符感兴趣的,可以去看看这里或者这个

参考: