来源:AI开发日志公众号专辑「Build Your Own X With AI」
原文链接:https://mp.weixin.qq.com/s?__biz=MzUxMjg3MjE2OA==&mid=2247486287&idx=1&sn=56ffbf6715f1d8e35d736ca23c63525a&chksm=f95c90c8ce2b19de8fca5618703a51be0663916aa9dff0c70df2e10a13cb23ebc8ef26713c5c#rd

区位码输入法

一款基于 GB2312 区位码的 iOS 系统级输入法,支持通过输入 4 位数字快速输入汉字。

截图

功能特点

✅ 系统级键盘扩展 - 可在任意 App 中使用

✅ 完整 GB2312 支持 - 涵盖所有常用汉字

✅ 实时预览 - 输入区位码时实时显示对应汉字

✅ 码表查询 - 内置完整 GB2312 码表查询功能

✅ 简洁界面 - 清晰的数字键盘布局

✅ 便捷操作 - 长按(0.5秒)”0”按钮可切换键盘

什么是区位码?

GB2312 区位码是一种汉字编码方式,将每个汉字对应到一个 4 位数字编码:

前 2 位:区号(01-94)

后 2 位:位号(01-94)

例如:

1601

→ 啊

3021

→ 镜

5448

→ 中

2136

→ 的

安装方法

  1. 编译安装

克隆项目

git clone 

cd ChineseCharacterPositionCode

使用 Xcode 打开项目

open ChineseCharacterPositionCode.xcodeproj

连接 iOS 真机,选择设备后运行(Command + R)

  1. 添加键盘

在设备上打开主 App

点击”使用说明”标签页

点击”打开键盘设置”按钮

在键盘列表中点击”添加新键盘…”

在第三方键盘列表中找到”区位码”

点击添加

  1. 使用键盘

在任意输入框中调出键盘

长按(0.5秒)”0”按钮

,选择”区位码”

输入 4 位数字即可输入对应汉字

使用说明

键盘布局

┌─────────────────────────┐

│  区位码: 1601           │

│  啊                     │  ← 输入显示区(实时预览)

└─────────────────────────┘

┌───┬───┬───┐

│ 1 │ 2 │ 3 │

├───┼───┼───┤

│ 4 │ 5 │ 6 │

├───┼───┼───┤

│ 7 │ 8 │ 9 │

└───┴───┴───┘

┌───┬─────┬───────┬─────┐

│ 0 │删除 │  空格  │换行 │

└───┴─────┴───────┴─────┘

功能按键

数字键 0-9

:输入区位码

0 按钮

:点击输入数字 0,长按(0.5秒)切换键盘

删除

:删除输入的数字或已输入的字符

空格

:输入空格

换行

:输入换行符

输入流程

输入 4 位区位码数字

系统自动显示对应汉字预览

输入完成后自动插入汉字

继续输入下一个字符

码表查询

主 App 提供完整的 GB2312 码表查询功能:

功能

按区浏览

:选择 1-94 区查看该区所有汉字

搜索功能

:输入区位码快速定位

字符详情

:点击汉字查看详细信息

复制功能

:可复制区位码或汉字

区位分布

区号

内容

01-09

特殊符号

10-15

数字、字母等

16-55

一级汉字(3755个,按拼音排序)

56-87

二级汉字(3008个,按部首排序)

常用汉字区位码示例

常用汉字区位码示例

一级常用字(第 16-55 区)

1601

啊 - 1602 阿 - 1603 埃 - 1604 挨

3021

镜 - 3022 盅 - 3023 忠 - 3024 钟

5448

中 - 5449 图 - 5450 圄 - 5451 团

高频汉字

2136

5027

4239

1823

1670

2934

1862

2050

2123

2976

技术架构

项目结构

ChineseCharacterPositionCode/

├── ChineseCharacterPositionCode/    # 主 App

│   ├── ChineseCharacterPositionCodeApp.swift

│   ├── ContentView.swift             # 主界面(码表查询 + 使用说明)

│   └── GB2312Data.swift              # 区位码数据模型

├── PositionCodeKeyboard/             # 键盘扩展

│   ├── KeyboardViewController.swift  # 键盘实现

│   └── Info.plist                    # 键盘配置

└── README.md

核心技术

SwiftUI

:主 App 界面开发

UIKit

:自定义键盘实现

Keyboard Extension

:iOS 键盘扩展

GB2312 编码转换

:区位码到 Unicode 的转换

区位码转换原理

// GB2312 编码计算公式

let highByte = area +0xA0// 区号 + 0xA0

let lowByte = position +0xA0// 位号 + 0xA0

// 使用 GB_18030_2000 编码转换为 Unicode

let gb2312Bytes: [UInt8] = [UInt8(highByte), UInt8(lowByte)]

let character =String(bytes: gb2312Bytes, encoding: .GB_18030_2000)

系统要求

iOS 14.0 或更高版本

Xcode 14.0 或更高版本

真机测试(键盘扩展不支持模拟器)

常见问题

Q: 为什么添加键盘后看不到?

A: 请确保:

完全删除旧版本 App 后重新安装

使用真机运行(不是模拟器)

在系统设置中正确添加键盘

尝试重启设备

Q: 如何切换到区位码键盘?

A: 在任意输入框中,长按(0.5秒)”0”按钮(或其他键盘的地球图标),在弹出菜单中选择”区位码”。

Q: 为什么有些区位码查不到字?

A: GB2312 标准并非所有区位都有对应汉字,某些位置为空或保留。

Q: 可以输入特殊符号吗?

A: 可以,第 1-9 区包含各种特殊符号,可在码表查询中查看。

开发计划

[ ] 支持常用汉字收藏功能

[ ] 添加区位码反查功能(输入汉字查区位码)

[ ] 支持深色模式

[ ] 添加键盘音效和震动反馈

[ ] 优化键盘布局适配不同屏幕尺寸

许可证

MIT License

贡献

https://github.com/build-your-own-x-with-ai/ChineseCharacterPositionCode

欢迎提交 Issue 和 Pull Request!

联系方式

如有问题或建议,请提交 Issue。

注意:本项目仅供学习交流使用,区位码输入法适合需要精确输入汉字或学习汉字编码的场景。

使用截图说明

主界面

码表查询页面

码表查询页面提供完整的 GB2312 码表浏览和搜索功能:

区选择器

:快速切换 1-94 区

搜索框

:输入区位码进行搜索

字符网格

:以卡片形式展示所有汉字

字符详情

:点击可查看详细信息并复制

使用说明页面

使用说明页面包含:

区位码介绍

:什么是区位码及其编码规则

使用教程

:如何使用键盘输入汉字

添加键盘指南

:详细的键盘安装步骤

快捷按钮

:一键跳转到系统键盘设置

常用汉字参考

:区位码分布说明

键盘界面

键盘布局说明

┌─────────────────────────┐

│  区位码: 1601           │  ← 当前输入的区位码

│  啊                     │  ← 实时预览的汉字

└─────────────────────────┘

┌───────┬───────┬───────┐

│   1   │   2   │   3   │

├───────┼───────┼───────┤

│   4   │   5   │   6   │

├───────┼───────┼───────┤

│   7   │   8   │   9   │

└───────┴───────┴───────┘

┌─────┬───────┬─────────┬───────┐

│  0  │ 删除  │  空格   │ 换行  │

└─────┴───────┴─────────┴───────┘

功能说明

顶部显示区

实时显示当前输入的区位码

输入 4 位数字时显示对应汉字预览

数字键盘区

大号数字按钮,方便输入

标准 3x3 布局

功能键区

0 按钮

:点击输入数字 0,长按(0.5秒)切换键盘

删除

:优先删除输入缓冲区,然后删除文本

空格

:输入空格字符

换行

:输入换行符

使用流程示例

示例 1:输入”中国”

切换到区位码键盘

输入 3021

显示:区位码: 3021 → 中

自动插入”中”

输入 5448

显示:区位码: 5448 → 国

自动插入”国”

完成输入:”中国”

示例 2:输入”你好”

输入 3694 → 你

输入 2345 → 好

完成输入:”你好”

示例 3:纠错

输入 16

输入错误,按”删除”键

区位码变为 1

继续输入正确的数字

码表查询使用

查询特定汉字

打开主 App

进入”码表查询”标签页

在搜索框输入区位码(如 1601)

查看搜索结果

点击汉字查看详情

可复制区位码或汉字

浏览某个区

打开码表查询页面

点击顶部的区选择器

选择要浏览的区(如”第 16 区”)

浏览该区所有汉字

查找高频字

常用高频字主要在第 16-55 区(一级汉字):

第 16-19 区:a-d 开头的拼音

第 20-29 区:e-l 开头的拼音

第 30-39 区:m-q 开头的拼音

第 40-55 区:r-z 开头的拼音

设置说明

添加键盘

打开主 App

点击”使用说明”标签页

阅读”如何添加键盘?”部分

点击蓝色”打开键盘设置”按钮

在打开的系统设置页面中:

进入”键盘”设置

点击”添加新键盘…”

在第三方键盘中找到”区位码”

点击添加

切换键盘

在任意输入框中:

长按(0.5秒)”0”按钮

在弹出菜单中选择”区位码”

或使用系统地球图标(如果有其他键盘)。

技巧和建议

记忆常用字

建议记住一些高频字的区位码:

1684

1822

4263

2934

2976

查找生僻字

使用主 App 的码表查询

按区浏览(第 56-87 区是二级汉字)

记录需要的字的区位码

快速输入

熟练掌握数字键位置

记住常用字的区位码

利用实时预览确认输入

注意事项

必须输入 4 位数字

:不足 4 位不会输出汉字

区位范围

:区号和位号都是 01-94

并非所有区位都有字

:某些位置为空

长按切换

:长按(0.5秒)”0”按钮可切换键盘

短按输入

:点击”0”按钮输入数字 0

故障排除

键盘不显示

确认已在系统设置中添加键盘

尝试重启设备

重新安装 App

无法输入汉字

检查是否输入了 4 位数字

确认区位码是否有效(01-94)

查看码表确认该位置是否有字

预览不显示

继续输入直到 4 位数字

确认区位码有效

如有其他问题,请参考 README.md 或提交 Issue。

image-1