[已解决]如何用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()方法是打印异常信息在程序中出错的位置及原因 } }}
For $i = 0x4e00 To 0x9fa5
ConsoleWrite('+ 0x' & Hex($i,4) & ' ' & ChrW($i) & @LF)
Next $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-20 17:03 编辑
谢谢上面两位!
以上代码能输出所有汉字!
还有个问题:以上的映射最高位是65535, 十六进制为FFFF, 为4位数.中日韩表意文字B区不在这个编码范围,是5位数的,范围从20000至2A6D6,又如何输出呢?
如映射为215d7的字, 对应的字为:https://pp.qianp.com/zidian/kai/137/215d7.png
页:
[1]