带圈数字符号0-100和unicode编码
1. 带圈字符
🄋 (这个是带圈的0,浏览器显示字符和word显示字符会有所差异)
①②③④⑤⑥⑦⑧⑨⑩
⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳
㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚
㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵
㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿
2. 带圈字符背后原理(0-50之后的带圈数字支持)
- 一开始也是想直接找到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
打印出来是这样的
①②③④⑤⑥⑦⑧⑨⑩
⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳
⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽
⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇
⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑
⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛
⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥
⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯
⒰⒱⒲⒳⒴⒵ⒶⒷⒸⒹ
ⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃ
然后我又试探性的往后看了看,还挺好玩的
▌▍▎▏▐░▒▓▔▕
▖▗▘▙▚▛▜▝▞▟
■□▢▣▤▥▦▧▨▩
▪▫▬▭▮▯▰▱▲△
▴▵▶▷▸▹►▻▼▽
▾▿◀◁◂◃◄◅◆◇
◈◉◊○◌◍◎●◐◑
◒◓◔◕◖◗◘◙◚◛
◜◝◞◟◠◡◢◣◤◥
◦◧◨◩◪◫◬◭◮◯
◰◱◲◳◴◵◶◷◸◹
◺◻◼◽◾◿☀☁☂☃
☄★☆☇☈☉☊☋☌☍
☎☏☐☑☒☓☔☕☖☗
☘☙☚☛☜☝☞☟☠☡
☢☣☤☥☦☧☨☩☪☫
☬☭☮☯☰☱☲☳☴☵
☶☷☸☹☺☻☼☽☾☿
♀♁♂♃♄♅♆♇♈♉
♊♋♌♍♎♏♐♑♒♓
参考: