批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

[完成]20元求unicode的汉字和拼音

本帖最后由 lxh623 于 2020-7-1 08:38 编辑

昨天求到了从xml取得unicode,还是没有汉字和拼音。比如:
U+3B88
U+200F5
U+4ACC
U+28DF2

想到一个办法,从网站搜索。http://www.unicode.org/charts/unihan.html,例如,https://www.unicode.org/cgi-bin/ ... ?codepoint=U%2B3B88
Your Browser是文字。kMandarin是拼音,这一个可能不一定有。
我把所有的unicode码写入文本a(UTF8或者ansi)。一行一个。
做成excel,第一行是unicode,第二行是文字,第三行是拼音。(编码最好unicode)

不知道还有别的办法没有。

谢谢!

附件: 您需要登录才可以下载或查看附件。没有帐号?注册
1

评分人数

提供bat代写,为你省时省力省事,支付宝扫码头像支付
QQ: 956535081

TOP

本帖最后由 lxh623 于 2020-6-24 09:08 编辑

回复 2# zaqmlp
谢谢!
有个新的想法。这个网站很慢。下载资料也是,但是,迅雷还好。
批处理怎么设置多线程。谢谢!
不行的话,就算了!

TOP

回复 1# lxh623


  完整的xml有吗?

TOP

回复 4# netdzb
百度云有cbreader或者Cbeta2016。

TOP

本帖最后由 went 于 2020-6-25 10:58 编辑

了解下powershell的多线程
存为bat,ANSI编码
测试了下线程太多容易卡死,建议只开5个线程
  1. @powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" &pause&exit
  2. #参数
  3. $unicodeFile="C:\Users\lenovo\Desktop\a.txt"; #unicode文件路径
  4. $saveFile="C:\Users\lenovo\Desktop\data.csv"; #保存的csv文件路径
  5. $maxThreadCount=5; #最大线程
  6. if((Test-Path $saveFile)){Remove-Item -Path $saveFile}
  7. #任务脚本
  8. $queryJob={
  9.     param($unicode="")
  10.     if($unicode -eq ""){return;}
  11.     $word="";$kMandarin=""
  12.     $ie=New-Object -ComObject "InternetExplorer.Application";
  13. $ie.Visible=$false;
  14.     $ie.Navigate("https://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint="+$unicode);
  15.     while($ie.Busy){Start-Sleep -Seconds 1}
  16.     $text=$ie.Document.querySelector("body").innerText;
  17.     if($text -match "Your Browser\s*(\S*?)\s"){$word=$Matches[1]}
  18.     if($text -match "kMandarin\s*(\S*?)\s"){$kMandarin=$Matches[1]}
  19.     $ie.Quit();
  20.     return $unicode+","+$word+","+$kMandarin;
  21. }
  22. #设置线程池
  23. $pool=[runspacefactory]::CreateRunspacePool(1,$maxThreadCount);
  24. $pool.Open(); #打开线程池
  25. $threads=New-Object "System.Collections.ArrayList"; #线程集
  26. $results=New-Object "System.Collections.ArrayList"; #结果集
  27. #开始创建线程
  28. Get-Content $unicodeFile | Select-Object -Unique | foreach {
  29.     Write-Host ("添加任务:{0}" -f $_);
  30.     $thread=[powershell]::Create(); #新建线程
  31.     $thread.RunspacePool=$pool; #设置线程池
  32.     [void]$thread.AddScript($queryJob); #任务脚本
  33.     [void]$thread.AddArgument($_.Trim()); #任务参数
  34.     [void]$threads.Add($thread); #保存线程
  35.     [void]$results.Add($thread.BeginInvoke()); #保存结果
  36. }
  37. Write-Host "任务全部创建完成!`n"
  38. #监视线程状态,1秒更新一次
  39. $datas=New-Object "System.Collections.ArrayList";
  40. $count=0;
  41. while($true){
  42.     $allDone=$true;
  43.     for($i=0;$i -lt $results.Count;$i++){
  44.         if($results[$i] -ne $null){
  45.             if($results[$i].IsCompleted){
  46.                 $data=$threads[$i].EndInvoke($results[$i])[0];
  47.                 Write-Host ("{0} 任务完成" -f $data);
  48.                 [void]$datas.Add($data);
  49.                 $threads[$i].Dispose();
  50.                 $threads[$i]=$null;
  51.                 $results[$i]=$null;
  52.                 $count++;
  53.                 [System.Console]::Title="进度:{0}/{1} " -f $count,$threads.Count;
  54.             } else {
  55.                 $allDone=$false;
  56.             }
  57.         }
  58.     }
  59.     if($allDone){break};
  60.     Start-Sleep -Seconds 1
  61. }
  62. Write-Host "任务全部完成!`n"
  63. #写入文件
  64. $datas | Out-String | Out-File $saveFile -Encoding unicode
  65. Write-Host ("已写入文件: {0}" -f $saveFile);
  66. #关闭线程池
  67. $pool.Close();
复制代码
1

评分人数

TOP

回复 6# went
这个在哪里修改线程?
要是不打开浏览器,就更好了。

TOP

回复 7# lxh623
改第5行

TOP

回复 8# went
请问,支付宝帐号。谢谢!

TOP

回复 3# lxh623


不是发了2种吗,用2.bat不行么
提供bat代写,为你省时省力省事,支付宝扫码头像支付
QQ: 956535081

TOP

回复 9# lxh623
点我头像

TOP

回复 11# went
请查收!

TOP

返回列表