VFP9 for Unicode - ANSI/UTF-8 自由切换版
先前讨论过,只需直接将VFP代码保存为 UTF-8 编码,即可在代码当中直接使用 UTF-8 字符串字面量。在讨论的过程中,我们发现一个问题:原版 VFP9 基于 ANSI 编码,会将代码中3字节的 UTF-8 字符,误判为2字节的 DBCS 字符,直接后果就是导致代码解析出错,无法正确编译。
这个“ANSI/UTF-8 自由切换版”比较完美地解决了这个问题。
解决方案的灵感,出自《三十六计》第十四计“借尸还魂”。我们改造了 VFP 系统内部一个已被官方废弃的函数 AnsiToOem,借用其接口,实现 VFP 字符编码在“双字节/单字节”之间即时相互切换。
用法如下:
AnsiToOem("UTF8"):立即切换至单字节模式
AnsiToOem("ANSI"):立即切换至双字节模式
默认值为:AnsiToOem("ANSI")
因 AnsiToOem 是 VFP 原生命令,你的代码当中若未用到 UTF-8 字符,那么是百分百兼容原版 VFP 系统的。
现在你可以自由地编写 UTF-8 编码的 VFP 代码啦!只需在编译前,执行一遍 AnsiToOem("UTF8"), UTF-8 代码即可正确编译。在程序当中,也可以随时随地地任意切换 ANSI/UTF-8 模式,打个比方,也就类似于 SET EXACT ON | OFF 那样子用法。
若遇任何问题,欢迎随时反馈!
- Have fun!









