SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('options', 'languages', 'contentTypes', 'codeEventListeners', 'deferredRun', 'simpleCache', 'addOns', 'defaultStyleProperties', 'routeFiltersIn', 'routeFiltersOut', 'routesPublic', 'nodeTypes', 'bannedIps', 'discouragedIps', 'styles', 'displayStyles', 'userBanners', 'smilies', 'bbCode', 'threadPrefixes', 'userTitleLadder', 'reportCounts', 'moderationCounts', 'userModerationCounts', 'notices', 'userFieldsInfo')
Run Time: 0.000540
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 26 | Using where |
SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('brListenerClasses', 'brBriviumAddOns')
Run Time: 0.000167
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 2 | Using where |
SELECT *
FROM xf_brivium_addon
ORDER BY addon_id
Run Time: 0.000142
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_brivium_addon | index | | PRIMARY | 77 | | 1 | |
INSERT INTO xf_data_registry
(data_key, data_value)
VALUES
(?, ?)
ON DUPLICATE KEY UPDATE
data_value = VALUES(data_value)
Params: brBriviumAddOns, a:0:{}
Run Time: 0.000136
SELECT cache_value
FROM xf_permission_combination
WHERE permission_combination_id = ?
Params: 1
Run Time: 0.000148
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_permission_combination | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT thread.*
,
user.gender, user.avatar_date, user.gravatar,
NULL AS thread_read_date,
0 AS thread_reply_banned,
0 AS thread_is_watched,
'' AS draft_message, NULL AS draft_extra
FROM xf_thread AS thread
LEFT JOIN xf_user AS user ON
(user.user_id = thread.user_id)
WHERE thread.thread_id = ?
Params: 341280
Run Time: 0.000409
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | thread | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | user | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT node.*, forum.*
,
permission.cache_value AS node_permission_cache,
NULL AS forum_read_date
FROM xf_forum AS forum
INNER JOIN xf_node AS node ON (node.node_id = forum.node_id)
LEFT JOIN xf_permission_cache_content AS permission
ON (permission.permission_combination_id = 1
AND permission.content_type = 'node'
AND permission.content_id = forum.node_id)
WHERE node.node_id = ?
Params: 38
Run Time: 0.000380
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | forum | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | node | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | permission | const | PRIMARY | PRIMARY | 35 | const,const,const | 1 | |
SELECT post.*
,
thread.*, thread.user_id AS thread_user_id, thread.username AS thread_username,
thread.post_date AS thread_post_date,
post.user_id, post.username, post.post_date,
bb_code_parse_cache.parse_tree AS message_parsed, bb_code_parse_cache.cache_version AS message_cache_version,
user.*, IF(user.username IS NULL, post.username, user.username) AS username,
user_profile.*,
user_privacy.*,
signature_parse_cache.parse_tree AS signature_parsed, bb_code_parse_cache.cache_version AS signature_cache_version,
session_activity.view_date AS last_view_date,
0 AS like_date
FROM xf_post AS post
INNER JOIN xf_thread AS thread ON
(thread.thread_id = post.thread_id)
LEFT JOIN xf_bb_code_parse_cache AS bb_code_parse_cache ON
(bb_code_parse_cache.content_type = 'post' AND bb_code_parse_cache.content_id = post.post_id)
LEFT JOIN xf_user AS user ON
(user.user_id = post.user_id)
LEFT JOIN xf_user_profile AS user_profile ON
(user_profile.user_id = post.user_id)
LEFT JOIN xf_user_privacy AS user_privacy ON
(user_privacy.user_id = post.user_id)
LEFT JOIN xf_bb_code_parse_cache AS signature_parse_cache ON
(signature_parse_cache.content_type = 'signature' AND signature_parse_cache.content_id = post.user_id)
LEFT JOIN xf_session_activity AS session_activity ON
(post.user_id > 0 AND session_activity.user_id = post.user_id AND session_activity.unique_key = CAST(post.user_id AS BINARY))
WHERE (
(post.thread_id = ? AND (post.position >= 0 AND post.position < 10) )
)
AND (post.message_state IN ('visible'))
ORDER BY post.position ASC, post.post_date ASC
Params: 341280
Run Time: 0.001478
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | thread | const | PRIMARY | PRIMARY | 4 | const | 1 | Using filesort |
SIMPLE | post | ref | thread_id_post_date,thread_id_position | thread_id_post_date | 4 | const | 1 | Using index condition; Using where |
SIMPLE | bb_code_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xenforo.cc.post.post_id | 1 | Using where |
SIMPLE | user | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | user_profile | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | user_privacy | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | signature_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xenforo.cc.post.user_id | 1 | Using where |
SIMPLE | session_activity | eq_ref | PRIMARY | PRIMARY | 22 | xenforo.cc.post.user_id,func | 1 | Using where |
INSERT INTO xf_thread_view
(thread_id)
VALUES
(?)
Params: 341280
Run Time: 0.000086
INSERT INTO `xf_session` (`session_id`, `session_data`, `expiry_date`) VALUES (?, ?, ?)
Params: ffc3557ed5ab556b2230d948963537ef, , 1716316829
Run Time: 0.000808
INSERT INTO xf_session_activity
(user_id, unique_key, ip, controller_name, controller_action, view_state, params, view_date, robot_key)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
ip = VALUES(ip),
controller_name = VALUES(controller_name),
controller_action = VALUES(controller_action),
view_state = VALUES(view_state),
params = VALUES(params),
view_date = VALUES(view_date),
robot_key = VALUES(robot_key)
Params: 0, , , XenForo_ControllerPublic_Thread, Index, valid, thread_id=341280, 1716313229,
Run Time: 0.000104
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 347912, a:47:{i:0;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:80:"https://pic1.zhimg.com/v2-6eff6a41316dd03aa07f439119c98481_l.jpg?source=8673f162";}}i:1;s:65:" Kushim Jiang,前一级字典翻找员,现二级切字工。 ";i:2;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:58:"https://www.zhihu.com/question/320187176/answer/1467440892";s:8:"original";a:2:{i:0;s:66:"[URL='https://www.zhihu.com/question/320187176/answer/1467440892']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:12:"阅读原文";}}i:3;s:76:"
「⿰口当」的源流梳理起来相当简单。稍微介绍一番。
";i:4;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:21:"一、分化与简化";}}i:5;s:55:"
「當」一直有用作象声词的例子,如:
";i:6;a:4:{s:3:"tag";s:6:"indent";s:6:"option";N;s:8:"original";a:2:{i:0;s:8:"[INDENT]";i:1;s:9:"[/INDENT]";}s:8:"children";a:1:{i:0;s:132:"[宋]陳師道《黄樓絶句》:「樓上當當徹夜聲,與人何事有枯榮。」任淵注:「當當,塌碑聲。」";}}i:7;s:142:"
作为象声词的「當」此后添「口」分化作「噹」,用作形容玉、石、金属等材质的器物撞击的声音。如:
";i:8;a:4:{s:3:"tag";s:6:"indent";s:6:"option";N;s:8:"original";a:2:{i:0;s:8:"[INDENT]";i:1;s:9:"[/INDENT]";}s:8:"children";a:1:{i:0;s:223:"《西遊記》第七十回:「行者聞説,將金杯連酒望空一撇,噹的一聲響亮,那个金杯落地。」
[清]洪昇《長生殿・重圓》:「仙珮互趨蹌,趁天風,惟聞遥送叮噹。」";}}i:9;s:450:"
同时期,在俗字文本中「當」已有写作「当」的例子,如《宋元以來俗字譜》引《京本通俗小說》(元)、《目連記》、《金瓶梅》和《嶺南逸事》(清),「當」均写作「当」。
因此,在此后的历次简化方案中,「當」形均简化作「当」,同理「噹」亦简化作「⿰口当」。此后,二者合并,「⿰口当」中象声词的义项回归于「当」。
";i:10;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://picb.zhimg.com/v2-0cd2824eb0c384e51ce4f2898f04ccca_720w.jpg?source=8673f162";}}i:11;s:56:"
《第一批简体字表》,1935 年 8 月 22 日。
";i:12;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic4.zhimg.com/v2-ca30dfc059fec28cc3878390ca9cbcd7_720w.jpg?source=8673f162";}}i:13;s:56:"
《798 个汉字简化表草案》,1955 年 1 月。
";i:14;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic4.zhimg.com/v2-949f830da4871158423165f3e0485a36_720w.jpg?source=8673f162";}}i:15;s:46:"
《汉字简化方案》,1956 年 2 月。
";i:16;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic2.zhimg.com/v2-e9b4b0943c7f60f66cb766c4ab955920_720w.jpg?source=8673f162";}}i:17;s:44:"
《简化字总表》,1964 年 5 月。
";i:18;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:21:"二、铅印与照排";}}i:19;s:525:"
中国的第一次微机热被认为出现于 1984 年,所以拿出一本六七十年代的书籍问「他们如何打出来的?」问题总是听起来相当滑稽。
当书面文本的印刷处在铅排时代时,每个字的样式由刻成的铜模决定。不断浇铸铜模可以批量生产铅字,然后通过排版印刷得到书面文本。如果遇到字盘中没有的字,也没有对应的铜模可以铸得,则需要用手工刻制铅字。因而早期出版物上印刷得到的字是刻成的。
";i:20;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic4.zhimg.com/v2-ce2174ee3e18e437d91ae143e164fd9d_720w.jpg?source=8673f162";}}i:21;s:327:"
未名. 「半壶响叮⿰口当」[J]. 山花, 1958 (03): 6.
到照排时代时,生僻字的处理则交由补字软件和造字软件实现。例如「女娲补字软件」,包含点阵编辑方式和向量编辑方式,在拼完后输入私用的字符集码位将转换得到的点阵信息存盘。
顺带一提,";i:22;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:60:"http://www.zhihu.com/people/5d11c023a1f9c60e26f47b34bc649226";s:8:"original";a:2:{i:0;s:68:"[URL='http://www.zhihu.com/people/5d11c023a1f9c60e26f47b34bc649226']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:7:"@夙浅";}}i:23;s:63:" 文中的截图来自商务印书馆的《新华词典》。
";i:24;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic1.zhimg.com/v2-156f4b4ae92c54f2489dce4e80afa2db_720w.jpg?source=8673f162";}}i:25;s:64:"
《新华词典》(第四版),商务印书馆,2013-08
";i:26;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:24:"三、编码与伪编码";}}i:27;s:699:"
由于《简化字总表》中「噹」和「當」合并为「当」,在七四八工程中进行的字频统计里自然只会有「当」的字频,加上《简化字总表》使得 GB/T 2312-1980 中不会出现「⿰口当」字。又由于这是个简化字,所以其它国家和地区也不会提交这个字,从而 URO 中不会有这个字。
「⿰口当」这个字被收入 Unicode,或者说 ISO/IEC 10646,或者说 GB/T 13000,是在扩充 C 块内。由于当时对每个被提交的汉字有了「讲证据」的要求,中国方面对所有用字大头提交来的汉字进行审查,并筛选出有证据的汉字加以提交,其中就包括「⿰口当」字。
";i:28;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:60:"http://www.zhihu.com/people/59a4d5ded68f850d9f9b9ba01570754a";s:8:"original";a:2:{i:0;s:68:"[URL='http://www.zhihu.com/people/59a4d5ded68f850d9f9b9ba01570754a']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:17:"@BadVortex 恶漩";}}i:29;s:112:" 误以为「GBK-2001.87」里的「GBK」是那份《汉字内码扩展方案》,其实不然。耐心查看 ";i:30;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:69:"http://link.zhihu.com/?target=https%3A//www.unicode.org/reports/tr38/";s:8:"original";a:2:{i:0;s:77:"[URL='http://link.zhihu.com/?target=https%3A//www.unicode.org/reports/tr38/']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:7:"UAX #38";}}i:31;s:229:" 就能发现,「G」来自「国标」,指代中国的需求(也包括新加坡,不提),而「BK」的含义实际是《中国大百科全书》。具体的提交文件,如同引文所述的,来自 IRG N1227。
";i:32;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:56:"https://www.zhihu.com/question/24364505/answer/831121811";s:8:"original";a:2:{i:0;s:64:"[URL='https://www.zhihu.com/question/24364505/answer/831121811']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:58:"为何「⿰口当」(U+2A83D)会被 Unicode 收录?";}}i:33;s:1074:"
接下来需要解释臭名昭著的「腾讯 - 搜狗自造字库」。
简单来说,QQ 拼音输入法和搜狗输入法可能需要兼容 Windows XP 系统,该系统对 BMP 以外字符的支持很烂,其系统也不内置显示 SIP 汉字的字体文件,因此这两个输入法可能不会选择将字符映射到合法的 SIP 平面上。这可能是两个输入法盯上不合规矩的私用区(Private Use Area)的原因。
Windows 操作系统的上古时代有一款名为「EUDC Edit」的应用,「EUDC」是「end user defined character」(由端用户定义的字符)的意思,实际是一个将点阵图案造在私用区上的软件。
于是,QQ 拼音输入法造了 413 个字,搜狗输入法接着在后面造了 2 个字,并建立了输入方法。如今安装这两个输入法的最新版本,仍然会默认安装一个由他俩自造的字体(自然是相当丑陋的)。将这种行为解释为向后兼容是可以的,但是也没见着他们将其映射到合规的码位上,看来是不打算前进了。
";i:34;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:57:"https://www.zhihu.com/question/325533237/answer/701324778";s:8:"original";a:2:{i:0;s:65:"[URL='https://www.zhihu.com/question/325533237/answer/701324778']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:81:"搜狗自造字为什么用非标准码,造了哪些字在哪里能查出来?";}}i:35;s:2:"
";i:36;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:12:"四、现实";}}i:37;s:558:"
所谓「私用区」,是 UCS 建立初期由于字体技术尚未发展,每个字符造型需要对应上字符集码位,所引致的区块。用户定义自己需要的字符及其造型,并在自己实现的封闭系统中使用。这也是用 QQ 拼音输入法和搜狗输入法打出来而没法搜索的原因,因为它们是「私用」的。
至于标准的码位,也是许多答主提到的 U+2A83D 为何在知乎回答中无法显示,其所牵涉的则是一个至少 4 年前就已经被注意而一直未被推动的需求。
";i:38;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:55:"https://www.zhihu.com/question/35901422/answer/64960598";s:8:"original";a:2:{i:0;s:63:"[URL='https://www.zhihu.com/question/35901422/answer/64960598']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:45:"为什么知乎不支持 non-BMP 的汉字?";}}i:39;s:126:"
当然,即使是支持非 BMP 字符的评论区和专栏,也因为其屡次「升级」而变得与不支持无异。
";i:40;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:56:"https://www.zhihu.com/question/50565143/answer/467818743";s:8:"original";a:2:{i:0;s:64:"[URL='https://www.zhihu.com/question/50565143/answer/467818743']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:54:"知乎允许使用 Unicode 非 BMP 字符提问吗 ?";}}i:41;s:271:"
综上,「『⿰口当』打不出来」这一问题,在表层的曼德拉效应之下,是简化草案的惯性、口部拟声词的潜意识、落后输入法对新标准毫不跟进、落后网站对潜在需求毫不推动所共同引致的现象。
因此,";i:42;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:60:"http://www.zhihu.com/people/5d11c023a1f9c60e26f47b34bc649226";s:8:"original";a:2:{i:0;s:68:"[URL='http://www.zhihu.com/people/5d11c023a1f9c60e26f47b34bc649226']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:7:"@夙浅";}}i:43;s:5:" 、 ";i:44;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:60:"http://www.zhihu.com/people/6789df08a4ba6f4c56b3d8d86c0143e4";s:8:"original";a:2:{i:0;s:68:"[URL='http://www.zhihu.com/people/6789df08a4ba6f4c56b3d8d86c0143e4']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:7:"@caruce";}}i:45;s:137:" 所提到的「字库删除」说自然是明显错误的,因为在大众的视野中,它们从未合规地出现过。
以上。
";i:46;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:40:"https://www.zhihu.com/question/320187176";s:8:"original";a:2:{i:0;s:48:"[URL='https://www.zhihu.com/question/320187176']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:12:"阅读原文";}}}, 1621686945, 1716313229
Run Time: 0.000801