杨老师,您好:
有个关于字符集的问题想请教您一下。
我的工作中需要对EXCEL中的法语进行操作,但是VBA识别不了有些字母。
如图中chaines的i(上面有个标志的)
请问,有什么方法能实现这些操作?
终于有同学问到字符编码的问题了,让我静静先(不是因为激动,而是因为郁闷)……
不同语言中的字符编码,可以说是所有程序员的最大的噩梦之一!简单的说,我们在《提高篇》里面已经讲过,每个字符都是由一个数字代表的,那么除了最通用的英文外,其他各种语言都由各个国家自己规定了数字编码方案,所以同样一个23423,在汉语系统中可能代表某个汉字,而在法语系统中可能就代表某个“戴帽子”的字母。
为了解决这个问题,后来大家推出了Unicode编码方案,把常用语言都编到一套大的数字方案中,互不冲突。不过可惜的是,VBA特别是VBE并没有默认支持Unicode,而是仍然使用一种古老的方案称之为“代码页”。大概意思就是,如果windows当前的代码页是“中文”,那么23423就按中国方案翻译成汉字;如果代码页改成了“法文”,那么就把它按法国方案翻译成某个字母。
说到这里,楼主这个问题的解决办法就出来了:修改windows的代码页。具体做法是,打开“控制面板”——“语言与地区”,在设置窗口中找到“管理”——“修改系统地区” (不好意思,我的系统是英文版Windows7,所以上述几个名字是我自己看着翻译的,可能与中文版系统上面显示的不一样)。在里面把地区改成“法国”,然后重启电脑。这回在运行VBA就可以用mid等函数取出法语字符串的每一位了。我在自己的电脑上亲测成功。
不说了,我现在马上要把电脑改回到“中国”并重启去了……
发表观点要登录哦!点击登录
我也来评论