ANSI 与 UTF-8 编码选择与中文发送
为什么会有编码问题
计算机网络上传送的都是字节,没有"字符"这个概念。当你在 NetAssist 发送框里输入中文时,它必须把每个汉字翻译成一串字节才能发出去。接收方收到这串字节后,也必须用同样的规则才能还原出正确的汉字。
发送方和接收方的编码规则不一致,就会产生乱码。
NetAssist 的编码选项
NetAssist 在发送和接收两侧都提供了 ANSI 与 UTF-8 两种编码选项。
- ANSI:在中文 Windows 上等同于 GBK(代码页 936)。每个汉字用 2 个字节表示。
- UTF-8:国际通用编码。每个汉字用 3 个字节表示。
切换编码后,收发数据都会按新编码进行转换,不需要重启软件。
发送框编码与接收框编码是独立的
你可以:
- 发送用 UTF-8,接收显示也用 UTF-8(大多数现代设备的选择)
- 发送用 ANSI(GBK),但接收显示用 UTF-8(接收方发来的是 UTF-8 数据)
两边互不影响,按需设置。
典型编码匹配场景
| 对方设备 | 应该选什么编码 |
|---|---|
| 嵌入式设备(常固定 GBK) | ANSI |
| 现代 Web 服务 / HTTP API | UTF-8 |
| C 语言程序(用系统 locale) | 取决于对方系统设置 |
| Java 程序(默认 UTF-8) | UTF-8 |
| Python 程序(默认 UTF-8) | UTF-8 |
如何验证编码对不对
一个简单的验证方法:发送一句包含常见汉字的话(比如"你好测试"),然后在 HEX 模式下看字节数。
- UTF-8 下,"你好测试"每个汉字 3 字节,共 12 字节。
- ANSI(GBK)下,每个汉字 2 字节,共 8 字节。
数一下字节数就能确认当前编码是否符合预期。
历史版本中的编码问题
V4.3.16 修复了循环发送 UTF-8 编码汉字时出现乱码的问题。如果你在使用较早版本,建议升级到 5.x 系列以避免这类问题。
关于 Windows 系统级代码页导致的界面乱码问题,详见 Windows 中文乱码。