hlzxcjx 发表于 2020-10-19 13:47:19

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

本帖最后由 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()方法是打印异常信息在程序中出错的位置及原因            }    }}




zghwelcome 发表于 2020-10-19 14:05:29

For $i = 0x4e00 To 0x9fa5
        ConsoleWrite('+ 0x' & Hex($i,4) & '        ' & ChrW($i) & @LF)
Next

tubaba 发表于 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

hlzxcjx 发表于 2020-10-19 16:48:31

本帖最后由 hlzxcjx 于 2020-10-20 17:03 编辑

谢谢上面两位!
以上代码能输出所有汉字!
还有个问题:以上的映射最高位是65535, 十六进制为FFFF, 为4位数.中日韩表意文字B区不在这个编码范围,是5位数的,范围从20000至2A6D6,又如何输出呢?
如映射为215d7的字, 对应的字为:https://pp.qianp.com/zidian/kai/137/215d7.png
页: [1]
查看完整版本: [已解决]如何用au3根据字符映射输出全部汉字呢(附python和java源码)?