标题: [完成]20元求unicode的汉字和拼音 [打印本页]
作者: lxh623 时间: 2020-6-23 16:20 标题: [完成]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)
不知道还有别的办法没有。
谢谢!
作者: zaqmlp 时间: 2020-6-23 21:48
[attach]12631[/attach][attach]12632[/attach]
作者: lxh623 时间: 2020-6-24 09:06
本帖最后由 lxh623 于 2020-6-24 09:08 编辑
回复 2# zaqmlp
谢谢!
有个新的想法。这个网站很慢。下载资料也是,但是,迅雷还好。
批处理怎么设置多线程。谢谢!
不行的话,就算了!
作者: netdzb 时间: 2020-6-24 12:42
回复 1# lxh623
完整的xml有吗?
作者: lxh623 时间: 2020-6-24 14:23
回复 4# netdzb
百度云有cbreader或者Cbeta2016。
作者: went 时间: 2020-6-24 19:55
本帖最后由 went 于 2020-6-25 10:58 编辑
了解下powershell的多线程
存为bat,ANSI编码
测试了下线程太多容易卡死,建议只开5个线程- @powershell -c "Get-Content '%~0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" &pause&exit
- #参数
- $unicodeFile="C:\Users\lenovo\Desktop\a.txt"; #unicode文件路径
- $saveFile="C:\Users\lenovo\Desktop\data.csv"; #保存的csv文件路径
- $maxThreadCount=5; #最大线程
- if((Test-Path $saveFile)){Remove-Item -Path $saveFile}
- #任务脚本
- $queryJob={
- param($unicode="")
- if($unicode -eq ""){return;}
- $word="";$kMandarin=""
- $ie=New-Object -ComObject "InternetExplorer.Application";
- $ie.Visible=$false;
- $ie.Navigate("https://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint="+$unicode);
- while($ie.Busy){Start-Sleep -Seconds 1}
- $text=$ie.Document.querySelector("body").innerText;
- if($text -match "Your Browser\s*(\S*?)\s"){$word=$Matches[1]}
- if($text -match "kMandarin\s*(\S*?)\s"){$kMandarin=$Matches[1]}
- $ie.Quit();
- return $unicode+","+$word+","+$kMandarin;
- }
- #设置线程池
- $pool=[runspacefactory]::CreateRunspacePool(1,$maxThreadCount);
- $pool.Open(); #打开线程池
- $threads=New-Object "System.Collections.ArrayList"; #线程集
- $results=New-Object "System.Collections.ArrayList"; #结果集
- #开始创建线程
- Get-Content $unicodeFile | Select-Object -Unique | foreach {
- Write-Host ("添加任务:{0}" -f $_);
- $thread=[powershell]::Create(); #新建线程
- $thread.RunspacePool=$pool; #设置线程池
- [void]$thread.AddScript($queryJob); #任务脚本
- [void]$thread.AddArgument($_.Trim()); #任务参数
- [void]$threads.Add($thread); #保存线程
- [void]$results.Add($thread.BeginInvoke()); #保存结果
- }
- Write-Host "任务全部创建完成!`n"
- #监视线程状态,1秒更新一次
- $datas=New-Object "System.Collections.ArrayList";
- $count=0;
- while($true){
- $allDone=$true;
- for($i=0;$i -lt $results.Count;$i++){
- if($results[$i] -ne $null){
- if($results[$i].IsCompleted){
- $data=$threads[$i].EndInvoke($results[$i])[0];
- Write-Host ("{0} 任务完成" -f $data);
- [void]$datas.Add($data);
- $threads[$i].Dispose();
- $threads[$i]=$null;
- $results[$i]=$null;
- $count++;
- [System.Console]::Title="进度:{0}/{1} " -f $count,$threads.Count;
- } else {
- $allDone=$false;
- }
- }
- }
- if($allDone){break};
- Start-Sleep -Seconds 1
- }
- Write-Host "任务全部完成!`n"
- #写入文件
- $datas | Out-String | Out-File $saveFile -Encoding unicode
- Write-Host ("已写入文件: {0}" -f $saveFile);
- #关闭线程池
- $pool.Close();
复制代码
作者: lxh623 时间: 2020-6-25 08:40
回复 6# went
这个在哪里修改线程?
要是不打开浏览器,就更好了。
作者: went 时间: 2020-6-25 10:58
回复 7# lxh623
改第5行
作者: lxh623 时间: 2020-6-27 14:43
回复 8# went
请问,支付宝帐号。谢谢!
作者: zaqmlp 时间: 2020-6-27 15:16
回复 3# lxh623
不是发了2种吗,用2.bat不行么
作者: went 时间: 2020-6-27 18:52
回复 9# lxh623
点我头像
作者: lxh623 时间: 2020-7-1 10:47
回复 11# went
请查收!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |