找回密码
 加入
搜索
查看: 1680|回复: 3

[AU3基础] [已解决]如何用au3根据字符映射输出全部汉字呢(附python和java源码)?

[复制链接]
发表于 2020-10-19 13:47:19 | 显示全部楼层 |阅读模式
本帖最后由 hlzxcjx 于 2020-10-23 12:53 编辑

   映射4e00对应的汉字为"一",映射9FA5对应的汉字为"龥"。
   遍历映射从4e00到9FA5可输出全部汉字。
   au3如何由映射转换成汉字呢?   如何将下面的代码转换为au3呢?
  下面是python和java源码:


python打印所有汉字:
n=0
for ch in xrange(0x4e00, 0x9fa5):
    print unichr(ch),
    n = n+1
    if(n%50==0):
        print '\n'
print n




java输出国标码中汉字:

public class StringDemo3 {
   public static void main(String[] args) {
       int i=1;
       StringBuilder sb = new StringBuilder();
       for(char c='\u4e00'; c<='\u9fa5';c++,i++){
           sb.append(c);
           if(i %50 ==0){
                sb.append("\n");
           }
       }
       System.out.print(sb.toString());
    }
}





或:Java输出windows中的全部汉字:


import java.io.File;//导入java.io包下的File
import java.io.FileWriter;//导入java.io包下的FileWriter
import java.io.IOException;//导入java.io包下的IOException
public class Test {//类名
    public static void main( String[] args ){ //程序主入口函数
        try{//try代码块,当发生异常时会转到catch代码块中
            File file =new File("Test666.txt");//创建文件对象
            if(!file.exists()){//if语句的条件,若指定路径下该文件不存在
            file.createNewFile();//则在指定路径下新建该文件
            }
            FileWriter fw=new FileWriter("Test666.txt");//创建FileWiter类对象
            String start="4e00";//定义一个字符串变量为4e00
            String end="9fa5";//定义一个字符串变量为9fa5
            int s=Integer.parseInt(start, 16);//16进制字符start转换为10进制整数
            int e=Integer.parseInt(end, 16);//16进制字符end转换为10进制整数
            for (int i=s;i<=e;i++){//for循环实现汉字的输出
            String str=(char)i+ "";//类型转换
            fw.write(str);//在指定文件中输入内容
            }
            System.out.println("windows系统所有汉字已写入指定文件中");//输出
            fw.flush();//通过flush实现批量输出
            fw.close();//关闭流
            }
        catch(IOException e){//try代码块有异常时转到catch代码块
            e.printStackTrace();//printStackTrace()方法是打印异常信息在程序中出错的位置及原因
            }
    }
}





发表于 2020-10-19 14:05:29 | 显示全部楼层
For $i = 0x4e00 To 0x9fa5
        ConsoleWrite('+ 0x' & Hex($i,4) & '        ' & ChrW($i) & @LF)
Next
发表于 2020-10-19 14:03:41 | 显示全部楼层
$fo = FileOpen('GBK字.csv',2 + 8 + 128)
;~ FileWriteLine($fo, '"字","首拼","全拼","16进制","区位码","十进制"')

For $i = 129 To 160
        For $j = 64 To 254
                Local $code = Hex($i, 2) & Hex($j, 2)
                Local $str = BinaryToString('0x' & $code)
                If $j <> 127 Then FileWriteLine($fo, '"' & $str & '","' & $code & '"')
        Next
        If $i <> 87 Then FileWriteLine($fo, @CRLF)
FileWriteLine($fo, @CRLF)
Next

For $i = 170 To 254
        For $j = 64 To 254
                Local $code = Hex($i, 2) & Hex($j, 2)
                Local $str = BinaryToString('0x' & $code)
                If $j <> 127 Then
                        If $i <> 254 Then
                        FileWriteLine($fo, '"' & $str & '","' & $code & '"')
                        Else
                        If $j <161 Then FileWriteLine($fo, '"' & $str & '","' & $code & '"')
                        EndIf
                EndIf
        Next
FileWriteLine($fo, @CRLF)
Next
 楼主| 发表于 2020-10-19 16:48:31 | 显示全部楼层
本帖最后由 hlzxcjx 于 2020-10-20 17:03 编辑

谢谢上面两位!
以上代码能输出所有汉字!
还有个问题:以上的映射最高位是65535, 十六进制为FFFF, 为4位数.  中日韩表意文字B区不在这个编码范围,是5位数的,范围从200002A6D6,又如何输出呢?
如映射为215d7的字, 对应的字为:
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-1 07:17 , Processed in 0.080545 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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