标题: 脚本对多语言OS的支持遇到问题
[打印本页]
作者: azziporah
时间: 2009-9-2 12:49
标题: 脚本对多语言OS的支持遇到问题
不知道这里有没有朋友涉足过多语言OS的支持性
我最近写点东西遇到一个问题,举个例子:在日文OS下,文件路径或注册表中的"\"成了类似"¥"的符号
这就给脚本的兼容性造成了一点影响
对于bat,还比较好解决,先 chcp 437 一下即可
(这一招对于注册表的相关操作可能没用,还得另想办法)
对于vbs,还没想到什么好办法,只好老老实实把有关的符号做成正则表达式来匹配
显然,这很麻烦
是否有好的解决办法?
另,如果有高人能分析一下这个文件路径和注册表中的符号的解析机制就更感激不尽了。
(我的猜想:不管什么语言版本的OS,文件系统(及其驱动)和注册表文件中实际使用的符号都是原始的"\";只不过在呈现给用户的时候,某些语言版本会加一层映射,使得用户看到的是贴合其所在国国情的"¥"或是别的什么符号了)
作者: slore
时间: 2009-9-2 13:07
代码前加
SetLocale("zh-cn")
看看,没有多语言系统不清楚。
作者: azziporah
时间: 2009-9-2 13:58
Quote: |
Originally posted by slore at 2009-9-2 13:07:
代码前加
SetLocale("zh-cn")
看看,没有多语言系统不清楚。 |
|
刚试了一下,locale变了,但是符号没变......
作者: slore
时间: 2009-9-2 15:01
转完以后用
\\做间隔的能访问和操作麽?
显示的话,应该是固有的字符串出来了。。
不然判断版本然后replace?
作者: azziporah
时间: 2009-9-2 23:11
明白了,就是code page的问题
\的ASCII是0x5F,这个是不变的
到了外文OS下,系统通过code page进行转换,然后显示出来
比如日文OS下,不管是用键盘直接输入\键、还是其他系统下输入过来的\,一显示就成了¥
如此一来,似乎我的问题不在于这些字符,而是另有其因了,我倒,继续debug......
作者: azziporah
时间: 2009-9-2 23:30
另外,code page是通过system locale决定的
而之前测试的setlocale应该是user locale,无法影响code page
参考MSDN
http://msdn.microsoft.com/en-us/goglobal/bb964662.aspx
和Wiki
http://en.wikipedia.org/wiki/Windows_code_page
但这样的话,那个chcp又如何解释呢 Orz