使用聚合接口获取汉字数据字典

原文:使用聚合接口获取汉字数据字典

如何获取全部汉字及汉字的详细信息?

刚刚扒了一通汉字完整的数据字典,mark作下记录。

所有汉字集合

我们匹配中文字符时,经常使用Unicode字符"[^\u4e00-\u9fa5]"正则表达式来校验。

详细的汉字字符集列表可参考:

具体的汉字对应的字符,可查询汉字字符集编码查询网站

基本汉字中从4e00到9fa5,十六进制转化为十进制后,可知共有20902个汉字。

汉字的集合,是开源的,可以直接从网上获取。

从以上链接中,下载汉字集合

获取汉字信息

汉字的详细信息,包括拼音/笔画数/部首/五笔输入/笔顺编号/注解

网上有相应的新华字典Api接口,这里选的是聚合平台-新华字典

通过他的C#源码,我们可以获取到汉字字典的详细信息

详细数据请点击 下载

PS:

  • 部首和五笔可能为空,部首返回的数据为:"难检字"。
  • 笔顺编号可通过返回的简解中得到。笔顺编号,即指每个笔画对应的号码,这个非常有用!

聚合接口-汉字

获取汉字:

 1         public static HanziDetail FindHanzi(string hanzi)
 2         {
 3             //1.根据汉字查询字典
 4             string url1 = "http://v.juhe.cn/xhzd/query";
 5
 6             var parameters1 = new Dictionary<string, string>();
 7
 8             parameters1.Add("word", hanzi); //填写需要查询的汉字,UTF8 urlencode编码
 9             parameters1.Add("key", "XXXXXX");//你申请的key
10             parameters1.Add("dtype", ""); //返回数据的格式,xml或json,默认json
11
12             string result2 = SendPost(url1, parameters1, "get");
13
14             var hanziRequestResponse = JsonConvert.DeserializeObject<HanziRequestResponse>(result2);
15
16             //HanziDetail hanziDetail = null;
17             //if (hanziRequestResponse.ErrorCode == "0" && hanziRequestResponse.Result != null)
18             //{
19             //    hanziDetail = hanziRequestResponse.Result;
20             //}
21
22             return hanziRequestResponse.Result;
23         }
24     }

解析类:

 1     [DataContract]
 2     public class HanziRequestResponse
 3     {
 4         [DataMember(Name = "reason")]
 5         public string Reason { get; set; }
 6
 7         [DataMember(Name = "error_code")]
 8         public string ErrorCode { get; set; }
 9
10         [DataMember(Name = "result")]
11         public HanziDetail Result { get; set; }
12     }
13     [DataContract]
14     public class HanziDetail
15     {
16         [DataMember(Name = "zi")]
17         public string Hanzi { get; set; }
18
19         /// <summary>
20         /// 部首
21         /// </summary>
22         [DataMember(Name = "bushou")]
23         public string Radical { get; set; }
24
25         /// <summary>
26         /// 拼音
27         /// </summary>
28         [DataMember(Name = "pinyin")]
29         public string Pinyin { get; set; }
30
31         /// <summary>
32         /// 笔画数
33         /// </summary>
34         [DataMember(Name = "bihua")]
35         public string Bihua { get; set; }
36
37         /// <summary>
38         /// 五笔
39         /// </summary>
40         [DataMember(Name = "wubi")]
41         public string WuBi { get; set; }
42
43         /// <summary>
44         /// 极简介绍
45         /// </summary>
46         [DataMember(Name = "jijie")]
47         public List<string> SimpleDetailContent { get; set; }
48     }

访问后台接口通用类:

  1     public class HttpRequestBase
  2     {
  3         /// <summary>
  4         /// Http (GET/POST)
  5         /// </summary>
  6         /// <param name="url">请求URL</param>
  7         /// <param name="parameters">请求参数</param>
  8         /// <param name="method">请求方法</param>
  9         /// <returns>响应内容</returns>
 10         public static string SendPost(string url, IDictionary<string, string> parameters, string method)
 11         {
 12             if (method.ToLower() == "post")
 13             {
 14                 HttpWebRequest req = null;
 15                 HttpWebResponse rsp = null;
 16                 System.IO.Stream reqStream = null;
 17                 try
 18                 {
 19                     req = (HttpWebRequest)WebRequest.Create(url);
 20                     req.Method = method;
 21                     req.KeepAlive = false;
 22                     req.ProtocolVersion = HttpVersion.Version10;
 23                     req.Timeout = 5000;
 24                     req.ContentType = "application/x-www-form-urlencoded;charset=utf-8";
 25                     byte[] postData = Encoding.UTF8.GetBytes(BuildQuery(parameters, "utf8"));
 26                     reqStream = req.GetRequestStream();
 27                     reqStream.Write(postData, 0, postData.Length);
 28                     rsp = (HttpWebResponse)req.GetResponse();
 29                     Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
 30                     return GetResponseAsString(rsp, encoding);
 31                 }
 32                 catch (Exception ex)
 33                 {
 34                     return ex.Message;
 35                 }
 36                 finally
 37                 {
 38                     if (reqStream != null) reqStream.Close();
 39                     if (rsp != null) rsp.Close();
 40                 }
 41             }
 42             else
 43             {
 44                 //创建请求
 45                 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + "?" + BuildQuery(parameters, "utf8"));
 46
 47                 //GET请求
 48                 request.Method = "GET";
 49                 request.ReadWriteTimeout = 5000;
 50                 request.ContentType = "text/html;charset=UTF-8";
 51                 HttpWebResponse response = (HttpWebResponse)request.GetResponse();
 52                 Stream myResponseStream = response.GetResponseStream();
 53                 StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
 54
 55                 //返回内容
 56                 string retString = myStreamReader.ReadToEnd();
 57                 return retString;
 58             }
 59         }
 60
 61         /// <summary>
 62         /// 组装普通文本请求参数。
 63         /// </summary>
 64         /// <param name="parameters">Key-Value形式请求参数字典</param>
 65         /// <returns>URL编码后的请求数据</returns>
 66         public static string BuildQuery(IDictionary<string, string> parameters, string encode)
 67         {
 68             StringBuilder postData = new StringBuilder();
 69             bool hasParam = false;
 70             IEnumerator<KeyValuePair<string, string>> dem = parameters.GetEnumerator();
 71             while (dem.MoveNext())
 72             {
 73                 string name = dem.Current.Key;
 74                 string value = dem.Current.Value;
 75                 // 忽略参数名或参数值为空的参数
 76                 if (!string.IsNullOrEmpty(name))//&& !string.IsNullOrEmpty(value)
 77                 {
 78                     if (hasParam)
 79                     {
 80                         postData.Append("&");
 81                     }
 82                     postData.Append(name);
 83                     postData.Append("=");
 84                     if (encode == "gb2312")
 85                     {
 86                         postData.Append(HttpUtility.UrlEncode(value, Encoding.GetEncoding("gb2312")));
 87                     }
 88                     else if (encode == "utf8")
 89                     {
 90                         postData.Append(HttpUtility.UrlEncode(value, Encoding.UTF8));
 91                     }
 92                     else
 93                     {
 94                         postData.Append(value);
 95                     }
 96                     hasParam = true;
 97                 }
 98             }
 99             return postData.ToString();
100         }
101
102         /// <summary>
103         /// 把响应流转换为文本。
104         /// </summary>
105         /// <param name="rsp">响应流对象</param>
106         /// <param name="encoding">编码方式</param>
107         /// <returns>响应文本</returns>
108         public static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
109         {
110             System.IO.Stream stream = null;
111             StreamReader reader = null;
112             try
113             {
114                 // 以字符流的方式读取HTTP响应
115                 stream = rsp.GetResponseStream();
116                 reader = new StreamReader(stream, encoding);
117                 return reader.ReadToEnd();
118             }
119             finally
120             {
121                 // 释放资源
122                 if (reader != null) reader.Close();
123                 if (stream != null) stream.Close();
124                 if (rsp != null) rsp.Close();
125             }
126         }
127     }

详细的源Demo,可查看Github :HanziDictionary

原文地址:https://www.cnblogs.com/lonelyxmas/p/9697739.html

时间: 2024-10-20 11:58:25

使用聚合接口获取汉字数据字典的相关文章

汉字数据字典

如何获取全部汉字及汉字的详细信息? 刚刚扒了一通汉字完整的数据字典,mark作下记录. 所有汉字集合 我们匹配中文字符时,经常使用Unicode字符"[^\u4e00-\u9fa5]"正则表达式来校验. 十六进制,从4e00到9fa5,转化为十进制后,可知共有20901个汉字. 汉字的集合,是开源的,可以直接从网上获取. 百度文库-中国汉字大全 Github-HanziToPinyin CSDN-中国所有汉字-简体 从以上链接中,下载汉字集合 获取汉字信息 汉字的详细信息,包括拼音/笔

iOS获取汉字的拼音

在iOS开发中经常涉及到汉字的排序,最常见的就是需要根据首字母的字符顺序排列,比如常见的通讯录等.总结出来,大致可以分为两种方法,其中参考文献[1]中提供的方法十分复杂,并且代码量很大,不建议采用.另一种方法是直接采用Core Foundation中提供的方法,十分简单,封装好的代码如下: 1 - (NSString *)transform:(NSString *)chinese{ 2 //将NSString装换成NSMutableString 3 NSMutableString *pinyin

获取汉字全拼、首字母缩写

demo效果: 引用:using System.Collections; 后台代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.

C/C++ 获取汉字拼音首字母

1 #include <stdint.h> 2 #include <stdio.h> 3 #include <ctype.h> 4 #include <string.h> 5 6 bool between(uint32_t start,uint32_t end,uint32_t aim); 7 char get_first_letter(wchar_t wchar); 8 void get_first_letters(const char *szChines

ios/android获取汉字拼音首字母

android/ios开发如何获取汉字拼音的首字母? 提供的一个比较好的方案,是使用 c语言编写的一个算法,可以 在ios和 android.下面提供一个可以使用的代码,并且附上使用方法: /* * pinyin.c * Chinese Pinyin First Letter * * Created by George on 4/21/10. * Copyright 2010 RED/SAFI. All rights reserved. * */ #define HANZI_START 1996

WebElement接口获取值

通过WebElement接口获取值 size 获取元素的尺寸 text 获取元素的文本 get_attribute(name) 获取属性值 location 获取元素坐标,先找到要获取的元素,再调用该方法 page_source 返回页面源码 driver.title 返回页面标题 current_url 获取当前页面的URL is_displayde() 判断该元素是否可见 is_enabled() 判断元素是否被使用 is_selected() 判断元素是否被选中 tag_name 返回元素

Spring Resource接口获取资源

本文转自http://elim.iteye.com/blog/2016305 感谢作者 Resource 所有的资源都被可以通过 InputStream 这个类来获取,所以也屏蔽了资源的提供者 ResourceLoader 接口负责资源的统一加载 通过Spring Resource接口获取资源 目录 1       Resource简介 2       通过ResourceLoader获取资源 3       在bean中获取Resource的方式 1       Resource简介 在Spr

C# 获取汉字拼音首字母

最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精   本节探讨C#获取汉字拼音首字母的方法: 代码类东西,直接上代码: /// <summary> /// 在指定的字符串列表CnStr中检索符合拼音索引字符串 /// </summary> /// <param name="CnStr">汉字字符串</param> /// <returns&

php获取汉字首字母

php获取汉字首字母,可以用于按字母对数据进行检索排序等. 分享下网上找的代码.亲测有效. function getFirstCharter($str){ if(empty($str)){return '';} $fchar=ord($str{0}); if($fchar>=ord('A')&&$fchar<=ord('z')) return strtoupper($str{0}); $s1=iconv('UTF-8','gb2312',$str); $s2=iconv('gb