搜索
查看: 2290|回复: 8

aardio里面如何获取操作系统语言,比如简体中文,英文,繁体中文等。

[复制链接]

5

主题

76

帖子

462

积分

二级会员

Rank: 3Rank: 3

积分
462
发表于 2012-12-16 19:19:43 | 显示全部楼层 |阅读模式
RT,aardio里面如何获取操作系统语言,比如简体中文,英文,繁体中文等。新手求教。
回复

使用道具 举报

20

主题

333

帖子

1980

积分

荣誉会员

Rank: 8Rank: 8

积分
1980
发表于 2012-12-16 19:53:55 | 显示全部楼层

[code]GetSystemDefaultLCID = ::Kernel32.api("GetSystemDefaultLCID","int()") LCI

  1. GetSystemDefaultLCID = ::Kernel32.api("GetSystemDefaultLCID","int()")
  2. LCIDChart = {
  3. [0x409] = "美国英语";
  4. [0x404] = "中国繁体";
  5. [0x804] = "中国简体";
  6. }

  7. var LCID = GetSystemDefaultLCID()
  8. io.open()
  9. io.print( LCIDChart[LCID] )
复制代码
回复

使用道具 举报

5

主题

76

帖子

462

积分

二级会员

Rank: 3Rank: 3

积分
462
 楼主| 发表于 2012-12-16 19:58:39 | 显示全部楼层

没想到回复的这么快,非常感谢!

没想到回复的这么快,非常感谢!
回复

使用道具 举报

0

主题

6

帖子

38

积分

新手入门

Rank: 1

积分
38
发表于 2017-8-26 22:15:46 | 显示全部楼层

新人借楼提问

cnhope 发表于 2012-12-16 19:58
没想到回复的这么快,非常感谢!

想利用 string.fromto(str,encoding,65001) 把当前操作系统默认语言的文本文件转换成utf8编码,其中第二个参数encoding,想根据当前系统的默认语言来自动识别。windows中的ANSI, 实际是指非Unicode时的语言的code page, 对于简体中文(GBK),参数encoding是936, 但是不知道怎么才能自动识别?上面 LCIDChart里面的0x804是十进制2052,和936不一样,不知道应该怎么才能得到string.fromto()函数直接能用的编码值参数?
回复

使用道具 举报

12

主题

541

帖子

3177

积分

五级会员

子非魚、安知魚之樂

Rank: 8Rank: 8

积分
3177
发表于 2017-8-27 15:32:39 | 显示全部楼层
  1. import console;

  2. Locale = {
  3.         [1033] = "美国英语";
  4.         [1028] = "繁体台湾";
  5.         [3076] = "繁体香港";
  6.         [2052] = "简体中文";
  7. }

  8. var id = ::Kernel32.GetUserDefaultUILanguage()
  9. console.log( Locale[id] )
  10. console.pause(true);

  11. //https://msdn.microsoft.com/en-us/library/ms912047(WinEmbedded.10).aspx
复制代码
回复

使用道具 举报

12

主题

541

帖子

3177

积分

五级会员

子非魚、安知魚之樂

Rank: 8Rank: 8

积分
3177
发表于 2017-8-27 15:39:33 | 显示全部楼层
aardi 发表于 2017-8-26 22:15
想利用 string.fromto(str,encoding,65001) 把当前操作系统默认语言的文本文件转换成utf8编码,其中第二 ...

微信截图_20170827154121.png

第二个参数为0 即默认系统默认编码
回复

使用道具 举报

12

主题

541

帖子

3177

积分

五级会员

子非魚、安知魚之樂

Rank: 8Rank: 8

积分
3177
发表于 2017-8-27 16:01:16 | 显示全部楼层
xauto 发表于 2017-8-27 15:39
第二个参数为0 即默认系统默认编码

...不对是第三个参数
回复

使用道具 举报

0

主题

6

帖子

38

积分

新手入门

Rank: 1

积分
38
发表于 2017-8-29 13:14:16 | 显示全部楼层
找到了,在 lib\string\conv\_.aardio 里有

var codepage = ::Kernel32.GetACP();

在简体中文系统里试验就是936,估计就是可以直接放入string.fromto()的第二个参数。
回复

使用道具 举报

110

主题

1385

帖子

7885

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7885
发表于 2017-8-29 13:42:13 | 显示全部楼层
aardi 发表于 2017-8-29 13:14
找到了,在 lib\string\conv\_.aardio 里有

var codepage = ::Kernel32.GetACP();

前面xauto已经解答你这个问题了:
0就是自动识别的默认编码,并且不写参数就是0,不需要自己指定。
回复

使用道具 举报

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2017-9-22 07:07 , Processed in 0.078125 second(s), 24 queries , Wincache On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表