PageRenderTime 41ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/AKDOA28/ZX.EHR.ResumeParseLib/Encoding/IdentifyEncoding.cs

#
C# | 2523 lines | 2171 code | 142 blank | 210 comment | 232 complexity | 86147ac96d7c57498271e0c74a920e7b MD5 | raw file
Possible License(s): LGPL-2.1, LGPL-3.0, Apache-2.0, GPL-2.0, BSD-3-Clause, LGPL-2.0, MIT, GPL-3.0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ZX.EHR.ResumeParseLib
  6. {
  7. #region 文件编码识别类.
  8. /// <summary>
  9. /// 检测字符编码的类
  10. /// <seealso cref="System.IO.Stream"/>
  11. /// <seealso cref="System.Uri"/>
  12. /// <seealso cref="System.IO.FileInfo"/>
  13. /// </summary>
  14. /// <remarks>
  15. /// <![CDATA[
  16. /// <strong>IdentifyEncoding</strong> 用来检测 <see cref="Uri"/>,<see cref="System.IO.FileInfo"/>,<see cref="sbyte"/> 字节数组的编码.
  17. /// Create By lion <br/>
  18. /// 2005-02-21 22:00 <br/>
  19. /// Support .Net Framework v1.1.4322 <br/>
  20. /// WebSite:www.lionsky.net(lion-a AT sohu.com) <br/>
  21. /// ]]>
  22. /// </remarks>
  23. public class IdentifyEncoding
  24. {
  25. #region Fields.....
  26. // Frequency tables to hold the GB, Big5, and EUC-TW character
  27. // frequencies
  28. internal static int[][] GBFreq = new int[94][];
  29. internal static int[][] GBKFreq = new int[126][];
  30. internal static int[][] Big5Freq = new int[94][];
  31. internal static int[][] EUC_TWFreq = new int[94][];
  32. internal static string[] nicename = new string[]
  33. {
  34. "GB2312", "GBK", "HZ", "Big5", "CNS 11643"
  35. , "ISO 2022CN", "UTF-8", "Unicode", "ASCII", "OTHER"
  36. };
  37. #endregion
  38. #region Methods.....
  39. /// <summary>
  40. /// 初始化 <see cref="IdentifyEncoding"/> 的实例
  41. /// </summary>
  42. public IdentifyEncoding()
  43. {
  44. Initialize_Frequencies();
  45. }
  46. #region GetEncodingName.....
  47. /// <summary>
  48. /// 从指定的 <see cref="Uri"/> 中判断编码类型
  49. /// </summary>
  50. /// <param name="testurl">要判断的 <see cref="Uri"/> </param>
  51. /// <returns>返回编码类型("GB2312", "GBK", "HZ", "Big5", "CNS 11643", "ISO 2022CN", "UTF-8", "Unicode", "ASCII", "OTHER")</returns>
  52. /// <example>
  53. /// 以下示例演示了如何调用 <see cref="GetEncodingName"/> 方法:
  54. /// <code>
  55. /// IdentifyEncoding ide = new IdentifyEncoding();
  56. /// Response.Write(ide.GetEncodingName(new Uri("http://china5.nikkeibp.co.jp/china/news/com/200307/pr_com200307170131.html")));
  57. /// </code>
  58. /// </example>
  59. public virtual string GetEncodingName(System.Uri testurl)
  60. {
  61. sbyte[] rawtext = new sbyte[1024];
  62. int bytesread = 0, byteoffset = 0;
  63. System.IO.Stream chinesestream;
  64. try
  65. {
  66. chinesestream = System.Net.WebRequest.Create(testurl.AbsoluteUri).GetResponse().GetResponseStream();
  67. while ((bytesread = ReadInput(chinesestream, ref rawtext, byteoffset, rawtext.Length - byteoffset)) > 0)
  68. {
  69. byteoffset += bytesread;
  70. }
  71. chinesestream.Close();
  72. }
  73. catch (System.Exception e)
  74. {
  75. System.Console.Error.WriteLine("Error loading or using URL " + e.ToString());
  76. }
  77. return GetEncodingName(rawtext);
  78. }
  79. /// <summary>
  80. /// 从指定的 <see cref="System.IO.FileInfo"/> 中判断编码类型
  81. /// </summary>
  82. /// <param name="testfile">要判断的 <see cref="System.IO.FileInfo"/> </param>
  83. /// <returns>返回编码类型("GB2312", "GBK", "HZ", "Big5", "CNS 11643", "ISO 2022CN", "UTF-8", "Unicode", "ASCII", "OTHER")</returns>
  84. /// <example>
  85. /// 以下示例演示了如何调用 <see cref="GetEncodingName"/> 方法:
  86. /// <code>
  87. /// IdentifyEncoding ide = new IdentifyEncoding();
  88. /// Response.Write(ide.GetEncodingName(new System.IO.FileInfo(@"C:\test.txt")));
  89. /// </code>
  90. /// </example>
  91. public virtual string GetEncodingName(System.IO.FileInfo testfile)
  92. {
  93. System.IO.FileStream chinesefile;
  94. sbyte[] rawtext;
  95. rawtext = new sbyte[(int)FileLength(testfile)];
  96. try
  97. {
  98. chinesefile = new System.IO.FileStream(testfile.FullName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
  99. ReadInput(chinesefile, ref rawtext, 0, rawtext.Length);
  100. }
  101. catch (System.Exception e)
  102. {
  103. System.Console.Error.WriteLine("Error: " + e);
  104. }
  105. return GetEncodingName(rawtext);
  106. }
  107. public virtual Encoding GetEncoding(string encodingName)
  108. {
  109. Encoding _encode = Encoding.Default;
  110. if (encodingName.Length == 0)
  111. return _encode;
  112. switch (encodingName)
  113. {
  114. case "UTF-8":
  115. _encode = Encoding.UTF8;
  116. break;
  117. case "Unicode":
  118. _encode = Encoding.Unicode;
  119. break;
  120. }
  121. return _encode;
  122. }
  123. /// <summary>
  124. /// 从指定的 <see cref="sbyte"/> 字节数组中判断编码类型
  125. /// </summary>
  126. /// <param name="rawtext">要判断的 <see cref="System.IO.FileInfo"/> </param>
  127. /// <returns>返回编码类型("GB2312", "GBK", "HZ", "Big5", "CNS 11643", "ISO 2022CN", "UTF-8", "Unicode", "ASCII", "OTHER")</returns>
  128. /// <example>
  129. /// 以下示例演示了如何调用 <see cref="GetEncodingName"/> 方法:
  130. /// <code>
  131. /// IdentifyEncoding ide = new IdentifyEncoding();
  132. /// Response.Write(ide.GetEncodingName(IdentifyEncoding.ToSByteArray(System.Text.Encoding.GetEncoding("gb2312").GetBytes("Lion互动网络(www.lionsky.net)"))));
  133. /// </code>
  134. /// </example>
  135. public virtual string GetEncodingName(sbyte[] rawtext)
  136. {
  137. int[] scores;
  138. int index, maxscore = 0;
  139. int encoding_guess = 0;
  140. scores = new int[10];
  141. //分析编码的概率
  142. scores[0] = GB2312Probability(rawtext);
  143. scores[1] = GBKProbability(rawtext);
  144. scores[2] = HZProbability(rawtext);
  145. scores[3] = BIG5Probability(rawtext);
  146. scores[4] = ENCTWProbability(rawtext);
  147. scores[5] = ISO2022CNProbability(rawtext);
  148. scores[6] = UTF8Probability(rawtext);
  149. scores[7] = UnicodeProbability(rawtext);
  150. scores[8] = ASCIIProbability(rawtext);
  151. scores[9] = 0;
  152. // Tabulate Scores
  153. for (index = 0; index < 10; index++)
  154. {
  155. if (scores[index] > maxscore)
  156. {
  157. encoding_guess = index;
  158. maxscore = scores[index];
  159. }
  160. }
  161. // Return OTHER if nothing scored above 50
  162. if (maxscore <= 50)
  163. {
  164. encoding_guess = 9;
  165. }
  166. return nicename[encoding_guess];
  167. }
  168. #endregion
  169. #region About Probability.....
  170. #region GB2312Probability
  171. /// <summary>
  172. /// 判断是GB2312编码的可能性
  173. /// </summary>
  174. /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  175. /// <returns>返回 0 至 100 之间的可能性</returns>
  176. internal virtual int GB2312Probability(sbyte[] rawtext)
  177. {
  178. int i, rawtextlen = 0;
  179. int dbchars = 1, gbchars = 1;
  180. long gbfreq = 0, totalfreq = 1;
  181. float rangeval = 0, freqval = 0;
  182. int row, column;
  183. // Stage 1: Check to see if characters fit into acceptable ranges
  184. rawtextlen = rawtext.Length;
  185. for (i = 0; i < rawtextlen - 1; i++)
  186. {
  187. if (rawtext[i] >= 0)
  188. {
  189. //asciichars++;
  190. }
  191. else
  192. {
  193. dbchars++;
  194. if ((sbyte)Identity(0xA1) <= rawtext[i] && rawtext[i] <= (sbyte)Identity(0xF7) && (sbyte)Identity(0xA1) <= rawtext[i + 1] && rawtext[i + 1] <= (sbyte)Identity(0xFE))
  195. {
  196. gbchars++;
  197. totalfreq += 500;
  198. row = rawtext[i] + 256 - 0xA1;
  199. column = rawtext[i + 1] + 256 - 0xA1;
  200. if (GBFreq[row][column] != 0)
  201. {
  202. gbfreq += GBFreq[row][column];
  203. }
  204. else if (15 <= row && row < 55)
  205. {
  206. gbfreq += 200;
  207. }
  208. }
  209. i++;
  210. }
  211. }
  212. rangeval = 50 * ((float)gbchars / (float)dbchars);
  213. freqval = 50 * ((float)gbfreq / (float)totalfreq);
  214. return (int)(rangeval + freqval);
  215. }
  216. #endregion
  217. #region GBKProbability.....
  218. /// <summary>
  219. /// 判断是GBK编码的可能性
  220. /// </summary>
  221. /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  222. /// <returns>返回 0 至 100 之间的可能性</returns>
  223. internal virtual int GBKProbability(sbyte[] rawtext)
  224. {
  225. int i, rawtextlen = 0;
  226. int dbchars = 1, gbchars = 1;
  227. long gbfreq = 0, totalfreq = 1;
  228. float rangeval = 0, freqval = 0;
  229. int row, column;
  230. // Stage 1: Check to see if characters fit into acceptable ranges
  231. rawtextlen = rawtext.Length;
  232. for (i = 0; i < rawtextlen - 1; i++)
  233. {
  234. if (rawtext[i] >= 0)
  235. {
  236. //asciichars++;
  237. }
  238. else
  239. {
  240. dbchars++;
  241. if ((sbyte)Identity(0xA1) <= rawtext[i] && rawtext[i] <= (sbyte)Identity(0xF7) && (sbyte)Identity(0xA1) <= rawtext[i + 1] && rawtext[i + 1] <= (sbyte)Identity(0xFE))
  242. {
  243. gbchars++;
  244. totalfreq += 500;
  245. row = rawtext[i] + 256 - 0xA1;
  246. column = rawtext[i + 1] + 256 - 0xA1;
  247. if (GBFreq[row][column] != 0)
  248. {
  249. gbfreq += GBFreq[row][column];
  250. }
  251. else if (15 <= row && row < 55)
  252. {
  253. gbfreq += 200;
  254. }
  255. }
  256. else if ((sbyte)Identity(0x81) <= rawtext[i] && rawtext[i] <= (sbyte)Identity(0xFE) && (((sbyte)Identity(0x80) <= rawtext[i + 1] && rawtext[i + 1] <= (sbyte)Identity(0xFE)) || ((sbyte)0x40 <= rawtext[i + 1] && rawtext[i + 1] <= (sbyte)0x7E)))
  257. {
  258. gbchars++;
  259. totalfreq += 500;
  260. row = rawtext[i] + 256 - 0x81;
  261. if (0x40 <= rawtext[i + 1] && rawtext[i + 1] <= 0x7E)
  262. {
  263. column = rawtext[i + 1] - 0x40;
  264. }
  265. else
  266. {
  267. column = rawtext[i + 1] + 256 - 0x80;
  268. }
  269. if (GBKFreq[row][column] != 0)
  270. {
  271. gbfreq += GBKFreq[row][column];
  272. }
  273. }
  274. i++;
  275. }
  276. }
  277. rangeval = 50 * ((float)gbchars / (float)dbchars);
  278. freqval = 50 * ((float)gbfreq / (float)totalfreq);
  279. return (int)(rangeval + freqval) - 1;
  280. }
  281. #endregion
  282. #region HZProbability.....
  283. /// <summary>
  284. /// 判断是HZ编码的可能性
  285. /// </summary>
  286. /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  287. /// <returns>返回 0 至 100 之间的可能性</returns>
  288. internal virtual int HZProbability(sbyte[] rawtext)
  289. {
  290. int i, rawtextlen;
  291. int hzchars = 0, dbchars = 1;
  292. long hzfreq = 0, totalfreq = 1;
  293. float rangeval = 0, freqval = 0;
  294. int hzstart = 0, hzend = 0;
  295. int row, column;
  296. rawtextlen = rawtext.Length;
  297. for (i = 0; i < rawtextlen; i++)
  298. {
  299. if (rawtext[i] == '~')
  300. {
  301. if (rawtext[i + 1] == '{')
  302. {
  303. hzstart++;
  304. i += 2;
  305. while (i < rawtextlen - 1)
  306. {
  307. if (rawtext[i] == 0x0A || rawtext[i] == 0x0D)
  308. {
  309. break;
  310. }
  311. else if (rawtext[i] == '~' && rawtext[i + 1] == '}')
  312. {
  313. hzend++;
  314. i++;
  315. break;
  316. }
  317. else if ((0x21 <= rawtext[i] && rawtext[i] <= 0x77) && (0x21 <= rawtext[i + 1] && rawtext[i + 1] <= 0x77))
  318. {
  319. hzchars += 2;
  320. row = rawtext[i] - 0x21;
  321. column = rawtext[i + 1] - 0x21;
  322. totalfreq += 500;
  323. if (GBFreq[row][column] != 0)
  324. {
  325. hzfreq += GBFreq[row][column];
  326. }
  327. else if (15 <= row && row < 55)
  328. {
  329. hzfreq += 200;
  330. }
  331. }
  332. else if (((byte)0xA1 <= rawtext[i] && rawtext[i] <= (byte)0xF7) && ((byte)0xA1 <= rawtext[i + 1] && rawtext[i + 1] <= (byte)0xF7))
  333. {
  334. hzchars += 2;
  335. row = rawtext[i] + 256 - 0xA1;
  336. column = rawtext[i + 1] + 256 - 0xA1;
  337. totalfreq += 500;
  338. if (GBFreq[row][column] != 0)
  339. {
  340. hzfreq += GBFreq[row][column];
  341. }
  342. else if (15 <= row && row < 55)
  343. {
  344. hzfreq += 200;
  345. }
  346. }
  347. dbchars += 2;
  348. i += 2;
  349. }
  350. }
  351. else if (rawtext[i + 1] == '}')
  352. {
  353. hzend++;
  354. i++;
  355. }
  356. else if (rawtext[i + 1] == '~')
  357. {
  358. i++;
  359. }
  360. }
  361. }
  362. if (hzstart > 4)
  363. {
  364. rangeval = 50;
  365. }
  366. else if (hzstart > 1)
  367. {
  368. rangeval = 41;
  369. }
  370. else if (hzstart > 0)
  371. {
  372. // Only 39 in case the sequence happened to occur
  373. rangeval = 39; // in otherwise non-Hz text
  374. }
  375. else
  376. {
  377. rangeval = 0;
  378. }
  379. freqval = 50 * ((float)hzfreq / (float)totalfreq);
  380. return (int)(rangeval + freqval);
  381. }
  382. #endregion
  383. #region BIG5Probability.....
  384. /// <summary>
  385. /// 判断是BIG5编码的可能性
  386. /// </summary>
  387. /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  388. /// <returns>返回 0 至 100 之间的可能性</returns>
  389. internal virtual int BIG5Probability(sbyte[] rawtext)
  390. {
  391. int i, rawtextlen = 0;
  392. int dbchars = 1, bfchars = 1;
  393. float rangeval = 0, freqval = 0;
  394. long bffreq = 0, totalfreq = 1;
  395. int row, column;
  396. // Check to see if characters fit into acceptable ranges
  397. rawtextlen = rawtext.Length;
  398. for (i = 0; i < rawtextlen - 1; i++)
  399. {
  400. if (rawtext[i] >= 0)
  401. {
  402. //asciichars++;
  403. }
  404. else
  405. {
  406. dbchars++;
  407. if ((sbyte)Identity(0xA1) <= rawtext[i] && rawtext[i] <= (sbyte)Identity(0xF9) && (((sbyte)0x40 <= rawtext[i + 1] && rawtext[i + 1] <= (sbyte)0x7E) || ((sbyte)Identity(0xA1) <= rawtext[i + 1] && rawtext[i + 1] <= (sbyte)Identity(0xFE))))
  408. {
  409. bfchars++;
  410. totalfreq += 500;
  411. row = rawtext[i] + 256 - 0xA1;
  412. if (0x40 <= rawtext[i + 1] && rawtext[i + 1] <= 0x7E)
  413. {
  414. column = rawtext[i + 1] - 0x40;
  415. }
  416. else
  417. {
  418. column = rawtext[i + 1] + 256 - 0x61;
  419. }
  420. if (Big5Freq[row][column] != 0)
  421. {
  422. bffreq += Big5Freq[row][column];
  423. }
  424. else if (3 <= row && row <= 37)
  425. {
  426. bffreq += 200;
  427. }
  428. }
  429. i++;
  430. }
  431. }
  432. rangeval = 50 * ((float)bfchars / (float)dbchars);
  433. freqval = 50 * ((float)bffreq / (float)totalfreq);
  434. return (int)(rangeval + freqval);
  435. }
  436. #endregion
  437. #region ENCTWProbability.....
  438. /// <summary>
  439. /// 判断是CNS11643(台湾)编码的可能性
  440. /// </summary>
  441. /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  442. /// <returns>返回 0 至 100 之间的可能性</returns>
  443. internal virtual int ENCTWProbability(sbyte[] rawtext)
  444. {
  445. int i, rawtextlen = 0;
  446. int dbchars = 1, cnschars = 1;
  447. long cnsfreq = 0, totalfreq = 1;
  448. float rangeval = 0, freqval = 0;
  449. int row, column;
  450. // Check to see if characters fit into acceptable ranges
  451. // and have expected frequency of use
  452. rawtextlen = rawtext.Length;
  453. for (i = 0; i < rawtextlen - 1; i++)
  454. {
  455. if (rawtext[i] >= 0)
  456. {
  457. // in ASCII range
  458. //asciichars++;
  459. }
  460. else
  461. {
  462. // high bit set
  463. dbchars++;
  464. if (i + 3 < rawtextlen && (sbyte)Identity(0x8E) == rawtext[i] && (sbyte)Identity(0xA1) <= rawtext[i + 1] && rawtext[i + 1] <= (sbyte)Identity(0xB0) && (sbyte)Identity(0xA1) <= rawtext[i + 2] && rawtext[i + 2] <= (sbyte)Identity(0xFE) && (sbyte)Identity(0xA1) <= rawtext[i + 3] && rawtext[i + 3] <= (sbyte)Identity(0xFE))
  465. {
  466. // Planes 1 - 16
  467. cnschars++;
  468. // These are all less frequent chars so just ignore freq
  469. i += 3;
  470. }
  471. else if ((sbyte)Identity(0xA1) <= rawtext[i] && rawtext[i] <= (sbyte)Identity(0xFE) && (sbyte)Identity(0xA1) <= rawtext[i + 1] && rawtext[i + 1] <= (sbyte)Identity(0xFE))
  472. {
  473. cnschars++;
  474. totalfreq += 500;
  475. row = rawtext[i] + 256 - 0xA1;
  476. column = rawtext[i + 1] + 256 - 0xA1;
  477. if (EUC_TWFreq[row][column] != 0)
  478. {
  479. cnsfreq += EUC_TWFreq[row][column];
  480. }
  481. else if (35 <= row && row <= 92)
  482. {
  483. cnsfreq += 150;
  484. }
  485. i++;
  486. }
  487. }
  488. }
  489. rangeval = 50 * ((float)cnschars / (float)dbchars);
  490. freqval = 50 * ((float)cnsfreq / (float)totalfreq);
  491. return (int)(rangeval + freqval);
  492. }
  493. #endregion
  494. #region ISO2022CNProbability.....
  495. /// <summary>
  496. /// 判断是ISO2022CN编码的可能性
  497. /// </summary>
  498. /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  499. /// <returns>返回 0 至 100 之间的可能性</returns>
  500. internal virtual int ISO2022CNProbability(sbyte[] rawtext)
  501. {
  502. int i, rawtextlen = 0;
  503. int dbchars = 1, isochars = 1;
  504. long isofreq = 0, totalfreq = 1;
  505. float rangeval = 0, freqval = 0;
  506. int row, column;
  507. // Check to see if characters fit into acceptable ranges
  508. // and have expected frequency of use
  509. rawtextlen = rawtext.Length;
  510. for (i = 0; i < rawtextlen - 1; i++)
  511. {
  512. if (rawtext[i] == (sbyte)0x1B && i + 3 < rawtextlen)
  513. {
  514. // Escape char ESC
  515. if (rawtext[i + 1] == (sbyte)0x24 && rawtext[i + 2] == 0x29 && rawtext[i + 3] == (sbyte)0x41)
  516. {
  517. // GB Escape $ ) A
  518. i += 4;
  519. while (rawtext[i] != (sbyte)0x1B)
  520. {
  521. dbchars++;
  522. if ((0x21 <= rawtext[i] && rawtext[i] <= 0x77) && (0x21 <= rawtext[i + 1] && rawtext[i + 1] <= 0x77))
  523. {
  524. isochars++;
  525. row = rawtext[i] - 0x21;
  526. column = rawtext[i + 1] - 0x21;
  527. totalfreq += 500;
  528. if (GBFreq[row][column] != 0)
  529. {
  530. isofreq += GBFreq[row][column];
  531. }
  532. else if (15 <= row && row < 55)
  533. {
  534. isofreq += 200;
  535. }
  536. i++;
  537. }
  538. i++;
  539. }
  540. }
  541. else if (i + 3 < rawtextlen && rawtext[i + 1] == (sbyte)0x24 && rawtext[i + 2] == (sbyte)0x29 && rawtext[i + 3] == (sbyte)0x47)
  542. {
  543. // CNS Escape $ ) G
  544. i += 4;
  545. while (rawtext[i] != (sbyte)0x1B)
  546. {
  547. dbchars++;
  548. if ((sbyte)0x21 <= rawtext[i] && rawtext[i] <= (sbyte)0x7E && (sbyte)0x21 <= rawtext[i + 1] && rawtext[i + 1] <= (sbyte)0x7E)
  549. {
  550. isochars++;
  551. totalfreq += 500;
  552. row = rawtext[i] - 0x21;
  553. column = rawtext[i + 1] - 0x21;
  554. if (EUC_TWFreq[row][column] != 0)
  555. {
  556. isofreq += EUC_TWFreq[row][column];
  557. }
  558. else if (35 <= row && row <= 92)
  559. {
  560. isofreq += 150;
  561. }
  562. i++;
  563. }
  564. i++;
  565. }
  566. }
  567. if (rawtext[i] == (sbyte)0x1B && i + 2 < rawtextlen && rawtext[i + 1] == (sbyte)0x28 && rawtext[i + 2] == (sbyte)0x42)
  568. {
  569. // ASCII: ESC ( B
  570. i += 2;
  571. }
  572. }
  573. }
  574. rangeval = 50 * ((float)isochars / (float)dbchars);
  575. freqval = 50 * ((float)isofreq / (float)totalfreq);
  576. return (int)(rangeval + freqval);
  577. }
  578. #endregion
  579. #region UTF8Probability.....
  580. /// <summary>
  581. /// 判断是UTF8编码的可能性
  582. /// </summary>
  583. /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  584. /// <returns>返回 0 至 100 之间的可能性</returns>
  585. internal virtual int UTF8Probability(sbyte[] rawtext)
  586. {
  587. int score = 0;
  588. int i, rawtextlen = 0;
  589. int goodbytes = 0, asciibytes = 0;
  590. // Maybe also use UTF8 Byte Order Mark: EF BB BF
  591. // Check to see if characters fit into acceptable ranges
  592. rawtextlen = rawtext.Length;
  593. for (i = 0; i < rawtextlen; i++)
  594. {
  595. if ((rawtext[i] & (sbyte)0x7F) == rawtext[i])
  596. {
  597. // One byte
  598. asciibytes++;
  599. // Ignore ASCII, can throw off count
  600. }
  601. else if (-64 <= rawtext[i] && rawtext[i] <= -33 && i + 1 < rawtextlen && -128 <= rawtext[i + 1] && rawtext[i + 1] <= -65)
  602. {
  603. goodbytes += 2;
  604. i++;
  605. }
  606. else if (-32 <= rawtext[i] && rawtext[i] <= -17 && i + 2 < rawtextlen && -128 <= rawtext[i + 1] && rawtext[i + 1] <= -65 && -128 <= rawtext[i + 2] && rawtext[i + 2] <= -65)
  607. {
  608. goodbytes += 3;
  609. i += 2;
  610. }
  611. }
  612. if (asciibytes == rawtextlen)
  613. {
  614. return 0;
  615. }
  616. score = (int)(100 * ((float)goodbytes / (float)(rawtextlen - asciibytes)));
  617. // If not above 98, reduce to zero to prevent coincidental matches
  618. // Allows for some (few) bad formed sequences
  619. if (score > 98)
  620. {
  621. return score;
  622. }
  623. else if (score > 95 && goodbytes > 30)
  624. {
  625. return score;
  626. }
  627. else
  628. {
  629. return 0;
  630. }
  631. }
  632. #endregion
  633. #region UnicodeProbability.....
  634. /// <summary>
  635. /// 判断是Unicode编码的可能性
  636. /// </summary>
  637. /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  638. /// <returns>返回 0 至 100 之间的可能性</returns>
  639. internal virtual int UnicodeProbability(sbyte[] rawtext)
  640. {
  641. //int score = 0;
  642. //int i, rawtextlen = 0;
  643. //int goodbytes = 0, asciibytes = 0;
  644. if (((sbyte)Identity(0xFE) == rawtext[0] && (sbyte)Identity(0xFF) == rawtext[1]) || ((sbyte)Identity(0xFF) == rawtext[0] && (sbyte)Identity(0xFE) == rawtext[1]))
  645. {
  646. return 100;
  647. }
  648. return 0;
  649. }
  650. #endregion
  651. #region ASCIIProbability.....
  652. /// <summary>
  653. /// 判断是ASCII编码的可能性
  654. /// </summary>
  655. /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  656. /// <returns>返回 0 至 100 之间的可能性</returns>
  657. internal virtual int ASCIIProbability(sbyte[] rawtext)
  658. {
  659. int score = 70;
  660. int i, rawtextlen;
  661. rawtextlen = rawtext.Length;
  662. for (i = 0; i < rawtextlen; i++)
  663. {
  664. if (rawtext[i] < 0)
  665. {
  666. score = score - 5;
  667. }
  668. else if (rawtext[i] == (sbyte)0x1B)
  669. {
  670. // ESC (used by ISO 2022)
  671. score = score - 5;
  672. }
  673. }
  674. return score;
  675. }
  676. #endregion
  677. #endregion
  678. #region Initialize_Frequencies.....
  679. /// <summary>
  680. /// 初始化必要的条件
  681. /// </summary>
  682. internal virtual void Initialize_Frequencies()
  683. {
  684. int i;
  685. if (GBFreq[0] == null)
  686. {
  687. for (i = 0; i < 94; i++)
  688. {
  689. GBFreq[i] = new int[94];
  690. }
  691. #region GBFreq[20][35] = 599;
  692. GBFreq[49][26] = 598;
  693. GBFreq[41][38] = 597;
  694. GBFreq[17][26] = 596;
  695. GBFreq[32][42] = 595;
  696. GBFreq[39][42] = 594;
  697. GBFreq[45][49] = 593;
  698. GBFreq[51][57] = 592;
  699. GBFreq[50][47] = 591;
  700. GBFreq[42][90] = 590;
  701. GBFreq[52][65] = 589;
  702. GBFreq[53][47] = 588;
  703. GBFreq[19][82] = 587;
  704. GBFreq[31][19] = 586;
  705. GBFreq[40][46] = 585;
  706. GBFreq[24][89] = 584;
  707. GBFreq[23][85] = 583;
  708. GBFreq[20][28] = 582;
  709. GBFreq[42][20] = 581;
  710. GBFreq[34][38] = 580;
  711. GBFreq[45][9] = 579;
  712. GBFreq[54][50] = 578;
  713. GBFreq[25][44] = 577;
  714. GBFreq[35][66] = 576;
  715. GBFreq[20][55] = 575;
  716. GBFreq[18][85] = 574;
  717. GBFreq[20][31] = 573;
  718. GBFreq[49][17] = 572;
  719. GBFreq[41][16] = 571;
  720. GBFreq[35][73] = 570;
  721. GBFreq[20][34] = 569;
  722. GBFreq[29][44] = 568;
  723. GBFreq[35][38] = 567;
  724. GBFreq[49][9] = 566;
  725. GBFreq[46][33] = 565;
  726. GBFreq[49][51] = 564;
  727. GBFreq[40][89] = 563;
  728. GBFreq[26][64] = 562;
  729. GBFreq[54][51] = 561;
  730. GBFreq[54][36] = 560;
  731. GBFreq[39][4] = 559;
  732. GBFreq[53][13] = 558;
  733. GBFreq[24][92] = 557;
  734. GBFreq[27][49] = 556;
  735. GBFreq[48][6] = 555;
  736. GBFreq[21][51] = 554;
  737. GBFreq[30][40] = 553;
  738. GBFreq[42][92] = 552;
  739. GBFreq[31][78] = 551;
  740. GBFreq[25][82] = 550;
  741. GBFreq[47][0] = 549;
  742. GBFreq[34][19] = 548;
  743. GBFreq[47][35] = 547;
  744. GBFreq[21][63] = 546;
  745. GBFreq[43][75] = 545;
  746. GBFreq[21][87] = 544;
  747. GBFreq[35][59] = 543;
  748. GBFreq[25][34] = 542;
  749. GBFreq[21][27] = 541;
  750. GBFreq[39][26] = 540;
  751. GBFreq[34][26] = 539;
  752. GBFreq[39][52] = 538;
  753. GBFreq[50][57] = 537;
  754. GBFreq[37][79] = 536;
  755. GBFreq[26][24] = 535;
  756. GBFreq[22][1] = 534;
  757. GBFreq[18][40] = 533;
  758. GBFreq[41][33] = 532;
  759. GBFreq[53][26] = 531;
  760. GBFreq[54][86] = 530;
  761. GBFreq[20][16] = 529;
  762. GBFreq[46][74] = 528;
  763. GBFreq[30][19] = 527;
  764. GBFreq[45][35] = 526;
  765. GBFreq[45][61] = 525;
  766. GBFreq[30][9] = 524;
  767. GBFreq[41][53] = 523;
  768. GBFreq[41][13] = 522;
  769. GBFreq[50][34] = 521;
  770. GBFreq[53][86] = 520;
  771. GBFreq[47][47] = 519;
  772. GBFreq[22][28] = 518;
  773. GBFreq[50][53] = 517;
  774. GBFreq[39][70] = 516;
  775. GBFreq[38][15] = 515;
  776. GBFreq[42][88] = 514;
  777. GBFreq[16][29] = 513;
  778. GBFreq[27][90] = 512;
  779. GBFreq[29][12] = 511;
  780. GBFreq[44][22] = 510;
  781. GBFreq[34][69] = 509;
  782. GBFreq[24][10] = 508;
  783. GBFreq[44][11] = 507;
  784. GBFreq[39][92] = 506;
  785. GBFreq[49][48] = 505;
  786. GBFreq[31][46] = 504;
  787. GBFreq[19][50] = 503;
  788. GBFreq[21][14] = 502;
  789. GBFreq[32][28] = 501;
  790. GBFreq[18][3] = 500;
  791. GBFreq[53][9] = 499;
  792. GBFreq[34][80] = 498;
  793. GBFreq[48][88] = 497;
  794. GBFreq[46][53] = 496;
  795. GBFreq[22][53] = 495;
  796. GBFreq[28][10] = 494;
  797. GBFreq[44][65] = 493;
  798. GBFreq[20][10] = 492;
  799. GBFreq[40][76] = 491;
  800. GBFreq[47][8] = 490;
  801. GBFreq[50][74] = 489;
  802. GBFreq[23][62] = 488;
  803. GBFreq[49][65] = 487;
  804. GBFreq[28][87] = 486;
  805. GBFreq[15][48] = 485;
  806. GBFreq[22][7] = 484;
  807. GBFreq[19][42] = 483;
  808. GBFreq[41][20] = 482;
  809. GBFreq[26][55] = 481;
  810. GBFreq[21][93] = 480;
  811. GBFreq[31][76] = 479;
  812. GBFreq[34][31] = 478;
  813. GBFreq[20][66] = 477;
  814. GBFreq[51][33] = 476;
  815. GBFreq[34][86] = 475;
  816. GBFreq[37][67] = 474;
  817. GBFreq[53][53] = 473;
  818. GBFreq[40][88] = 472;
  819. GBFreq[39][10] = 471;
  820. GBFreq[24][3] = 470;
  821. GBFreq[27][25] = 469;
  822. GBFreq[26][15] = 468;
  823. GBFreq[21][88] = 467;
  824. GBFreq[52][62] = 466;
  825. GBFreq[46][81] = 465;
  826. GBFreq[38][72] = 464;
  827. GBFreq[17][30] = 463;
  828. GBFreq[52][92] = 462;
  829. GBFreq[34][90] = 461;
  830. GBFreq[21][7] = 460;
  831. GBFreq[36][13] = 459;
  832. GBFreq[45][41] = 458;
  833. GBFreq[32][5] = 457;
  834. GBFreq[26][89] = 456;
  835. GBFreq[23][87] = 455;
  836. GBFreq[20][39] = 454;
  837. GBFreq[27][23] = 453;
  838. GBFreq[25][59] = 452;
  839. GBFreq[49][20] = 451;
  840. GBFreq[54][77] = 450;
  841. GBFreq[27][67] = 449;
  842. GBFreq[47][33] = 448;
  843. GBFreq[41][17] = 447;
  844. GBFreq[19][81] = 446;
  845. GBFreq[16][66] = 445;
  846. GBFreq[45][26] = 444;
  847. GBFreq[49][81] = 443;
  848. GBFreq[53][55] = 442;
  849. GBFreq[16][26] = 441;
  850. GBFreq[54][62] = 440;
  851. GBFreq[20][70] = 439;
  852. GBFreq[42][35] = 438;
  853. GBFreq[20][57] = 437;
  854. GBFreq[34][36] = 436;
  855. GBFreq[46][63] = 435;
  856. GBFreq[19][45] = 434;
  857. GBFreq[21][10] = 433;
  858. GBFreq[52][93] = 432;
  859. GBFreq[25][2] = 431;
  860. GBFreq[30][57] = 430;
  861. GBFreq[41][24] = 429;
  862. GBFreq[28][43] = 428;
  863. GBFreq[45][86] = 427;
  864. GBFreq[51][56] = 426;
  865. GBFreq[37][28] = 425;
  866. GBFreq[52][69] = 424;
  867. GBFreq[43][92] = 423;
  868. GBFreq[41][31] = 422;
  869. GBFreq[37][87] = 421;
  870. GBFreq[47][36] = 420;
  871. GBFreq[16][16] = 419;
  872. GBFreq[40][56] = 418;
  873. GBFreq[24][55] = 417;
  874. GBFreq[17][1] = 416;
  875. GBFreq[35][57] = 415;
  876. GBFreq[27][50] = 414;
  877. GBFreq[26][14] = 413;
  878. GBFreq[50][40] = 412;
  879. GBFreq[39][19] = 411;
  880. GBFreq[19][89] = 410;
  881. GBFreq[29][91] = 409;
  882. GBFreq[17][89] = 408;
  883. GBFreq[39][74] = 407;
  884. GBFreq[46][39] = 406;
  885. GBFreq[40][28] = 405;
  886. GBFreq[45][68] = 404;
  887. GBFreq[43][10] = 403;
  888. GBFreq[42][13] = 402;
  889. GBFreq[44][81] = 401;
  890. GBFreq[41][47] = 400;
  891. GBFreq[48][58] = 399;
  892. GBFreq[43][68] = 398;
  893. GBFreq[16][79] = 397;
  894. GBFreq[19][5] = 396;
  895. GBFreq[54][59] = 395;
  896. GBFreq[17][36] = 394;
  897. GBFreq[18][0] = 393;
  898. GBFreq[41][5] = 392;
  899. GBFreq[41][72] = 391;
  900. GBFreq[16][39] = 390;
  901. GBFreq[54][0] = 389;
  902. GBFreq[51][16] = 388;
  903. GBFreq[29][36] = 387;
  904. GBFreq[47][5] = 386;
  905. GBFreq[47][51] = 385;
  906. GBFreq[44][7] = 384;
  907. GBFreq[35][30] = 383;
  908. GBFreq[26][9] = 382;
  909. GBFreq[16][7] = 381;
  910. GBFreq[32][1] = 380;
  911. GBFreq[33][76] = 379;
  912. GBFreq[34][91] = 378;
  913. GBFreq[52][36] = 377;
  914. GBFreq[26][77] = 376;
  915. GBFreq[35][48] = 375;
  916. GBFreq[40][80] = 374;
  917. GBFreq[41][92] = 373;
  918. GBFreq[27][93] = 372;
  919. GBFreq[15][17] = 371;
  920. GBFreq[16][76] = 370;
  921. GBFreq[51][12] = 369;
  922. GBFreq[18][20] = 368;
  923. GBFreq[15][54] = 367;
  924. GBFreq[50][5] = 366;
  925. GBFreq[33][22] = 365;
  926. GBFreq[37][57] = 364;
  927. GBFreq[28][47] = 363;
  928. GBFreq[42][31] = 362;
  929. GBFreq[18][2] = 361;
  930. GBFreq[43][64] = 360;
  931. GBFreq[23][47] = 359;
  932. GBFreq[28][79] = 358;
  933. GBFreq[25][45] = 357;
  934. GBFreq[23][91] = 356;
  935. GBFreq[22][19] = 355;
  936. GBFreq[25][46] = 354;
  937. GBFreq[22][36] = 353;
  938. GBFreq[54][85] = 352;
  939. GBFreq[46][20] = 351;
  940. GBFreq[27][37] = 350;
  941. GBFreq[26][81] = 349;
  942. GBFreq[42][29] = 348;
  943. GBFreq[31][90] = 347;
  944. GBFreq[41][59] = 346;
  945. GBFreq[24][65] = 345;
  946. GBFreq[44][84] = 344;
  947. GBFreq[24][90] = 343;
  948. GBFreq[38][54] = 342;
  949. GBFreq[28][70] = 341;
  950. GBFreq[27][15] = 340;
  951. GBFreq[28][80] = 339;
  952. GBFreq[29][8] = 338;
  953. GBFreq[45][80] = 337;
  954. GBFreq[53][37] = 336;
  955. GBFreq[28][65] = 335;
  956. GBFreq[23][86] = 334;
  957. GBFreq[39][45] = 333;
  958. GBFreq[53][32] = 332;
  959. GBFreq[38][68] = 331;
  960. GBFreq[45][78] = 330;
  961. GBFreq[43][7] = 329;
  962. GBFreq[46][82] = 328;
  963. GBFreq[27][38] = 327;
  964. GBFreq[16][62] = 326;
  965. GBFreq[24][17] = 325;
  966. GBFreq[22][70] = 324;
  967. GBFreq[52][28] = 323;
  968. GBFreq[23][40] = 322;
  969. GBFreq[28][50] = 321;
  970. GBFreq[42][91] = 320;
  971. GBFreq[47][76] = 319;
  972. GBFreq[15][42] = 318;
  973. GBFreq[43][55] = 317;
  974. GBFreq[29][84] = 316;
  975. GBFreq[44][90] = 315;
  976. GBFreq[53][16] = 314;
  977. GBFreq[22][93] = 313;
  978. GBFreq[34][10] = 312;
  979. GBFreq[32][53] = 311;
  980. GBFreq[43][65] = 310;
  981. GBFreq[28][7] = 309;
  982. GBFreq[35][46] = 308;
  983. GBFreq[21][39] = 307;
  984. GBFreq[44][18] = 306;
  985. GBFreq[40][10] = 305;
  986. GBFreq[54][53] = 304;
  987. GBFreq[38][74] = 303;
  988. GBFreq[28][26] = 302;
  989. GBFreq[15][13] = 301;
  990. GBFreq[39][34] = 300;
  991. GBFreq[39][46] = 299;
  992. GBFreq[42][66] = 298;
  993. GBFreq[33][58] = 297;
  994. GBFreq[15][56] = 296;
  995. GBFreq[18][51] = 295;
  996. GBFreq[49][68] = 294;
  997. GBFreq[30][37] = 293;
  998. GBFreq[51][84] = 292;
  999. GBFreq[51][9] = 291;
  1000. GBFreq[40][70] = 290;
  1001. GBFreq[41][84] = 289;
  1002. GBFreq[28][64] = 288;
  1003. GBFreq[32][88] = 287;
  1004. GBFreq[24][5] = 286;
  1005. GBFreq[53][23] = 285;
  1006. GBFreq[42][27] = 284;
  1007. GBFreq[22][38] = 283;
  1008. GBFreq[32][86] = 282;
  1009. GBFreq[34][30] = 281;
  1010. GBFreq[38][63] = 280;
  1011. GBFreq[24][59] = 279;
  1012. GBFreq[22][81] = 278;
  1013. GBFreq[32][11] = 277;
  1014. GBFreq[51][21] = 276;
  1015. GBFreq[54][41] = 275;
  1016. GBFreq[21][50] = 274;
  1017. GBFreq[23][89] = 273;
  1018. GBFreq[19][87] = 272;
  1019. GBFreq[26][7] = 271;
  1020. GBFreq[30][75] = 270;
  1021. GBFreq[43][84] = 269;
  1022. GBFreq[51][25] = 268;
  1023. GBFreq[16][67] = 267;
  1024. GBFreq[32][9] = 266;
  1025. GBFreq[48][51] = 265;
  1026. GBFreq[39][7] = 264;
  1027. GBFreq[44][88] = 263;
  1028. GBFreq[52][24] = 262;
  1029. GBFreq[23][34] = 261;
  1030. GBFreq[32][75] = 260;
  1031. GBFreq[19][10] = 259;
  1032. GBFreq[28][91] = 258;
  1033. GBFreq[32][83] = 257;
  1034. GBFreq[25][75] = 256;
  1035. GBFreq[53][45] = 255;
  1036. GBFreq[29][85] = 254;
  1037. GBFreq[53][59] = 253;
  1038. GBFreq[16][2] = 252;
  1039. GBFreq[19][78] = 251;
  1040. GBFreq[15][75] = 250;
  1041. GBFreq[51][42] = 249;
  1042. GBFreq[45][67] = 248;
  1043. GBFreq[15][74] = 247;
  1044. GBFreq[25][81] = 246;
  1045. GBFreq[37][62] = 245;
  1046. GBFreq[16][55] = 244;
  1047. GBFreq[18][38] = 243;
  1048. GBFreq[23][23] = 242;
  1049. GBFreq[38][30] = 241;
  1050. GBFreq[17][28] = 240;
  1051. GBFreq[44][73] = 239;
  1052. GBFreq[23][78] = 238;
  1053. GBFreq[40][77] = 237;
  1054. GBFreq[38][87] = 236;
  1055. GBFreq[27][19] = 235;
  1056. GBFreq[38][82] = 234;
  1057. GBFreq[37][22] = 233;
  1058. GBFreq[41][30] = 232;
  1059. GBFreq[54][9] = 231;
  1060. GBFreq[32][30] = 230;
  1061. GBFreq[30][52] = 229;
  1062. GBFreq[40][84] = 228;
  1063. GBFreq[53][57] = 227;
  1064. GBFreq[27][27] = 226;
  1065. GBFreq[38][64] = 225;
  1066. GBFreq[18][43] = 224;
  1067. GBFreq[23][69] = 223;
  1068. GBFreq[28][12] = 222;
  1069. GBFreq[50][78] = 221;
  1070. GBFreq[50][1] = 220;
  1071. GBFreq[26][88] = 219;
  1072. GBFreq[36][40] = 218;
  1073. GBFreq[33][89] = 217;
  1074. GBFreq[41][28] = 216;
  1075. GBFreq[31][77] = 215;
  1076. GBFreq[46][1] = 214;
  1077. GBFreq[47][19] = 213;
  1078. GBFreq[35][55] = 212;
  1079. GBFreq[41][21] = 211;
  1080. GBFreq[27][10] = 210;
  1081. GBFreq[32][77] = 209;
  1082. GBFreq[26][37] = 208;
  1083. GBFreq[20][33] = 207;
  1084. GBFreq[41][52] = 206;
  1085. GBFreq[32][18] = 205;
  1086. GBFreq[38][13] = 204;
  1087. GBFreq[20][18] = 203;
  1088. GBFreq[20][24] = 202;
  1089. GBFreq[45][19] = 201;
  1090. GBFreq[18][53] = 200;
  1091. #endregion
  1092. }
  1093. if (GBKFreq[0] == null)
  1094. {
  1095. for (i = 0; i < 126; i++)
  1096. {
  1097. GBKFreq[i] = new int[191];
  1098. }
  1099. #region GBKFreq[52][132] = 600;
  1100. GBKFreq[73][135] = 599;
  1101. GBKFreq[49][123] = 598;
  1102. GBKFreq[77][146] = 597;
  1103. GBKFreq[81][123] = 596;
  1104. GBKFreq[82][144] = 595;
  1105. GBKFreq[51][179] = 594;
  1106. GBKFreq[83][154] = 593;
  1107. GBKFreq[71][139] = 592;
  1108. GBKFreq[64][139] = 591;
  1109. GBKFreq[85][144] = 590;
  1110. GBKFreq[52][125] = 589;
  1111. GBKFreq[88][25] = 588;
  1112. GBKFreq[81][106] = 587;
  1113. GBKFreq[81][148] = 586;
  1114. GBKFreq[62][137] = 585;
  1115. GBKFreq[94][0] = 584;
  1116. GBKFreq[1][64] = 583;
  1117. GBKFreq[67][163] = 582;
  1118. GBKFreq[20][190] = 581;
  1119. GBKFreq[57][131] = 580;
  1120. GBKFreq[29][169] = 579;
  1121. GBKFreq[72][143] = 578;
  1122. GBKFreq[0][173] = 577;
  1123. GBKFreq[11][23] = 576;
  1124. GBKFreq[61][141] = 575;
  1125. GBKFreq[60][123] = 574;
  1126. GBKFreq[81][114] = 573;
  1127. GBKFreq[82][131] = 572;
  1128. GBKFreq[67][156] = 571;
  1129. GBKFreq[71][167] = 570;
  1130. GBKFreq[20][50] = 569;
  1131. GBKFreq[77][132] = 568;
  1132. GBKFreq[84][38] = 567;
  1133. GBKFreq[26][29] = 566;
  1134. GBKFreq[74][187] = 565;
  1135. GBKFreq[62][116] = 564;
  1136. GBKFreq[67][135] = 563;
  1137. GBKFreq[5][86] = 562;
  1138. GBKFreq[72][186] = 561;
  1139. GBKFreq[75][161] = 560;
  1140. GBKFreq[78][130] = 559;
  1141. GBKFreq[94][30] = 558;
  1142. GBKFreq[84][72] = 557;
  1143. GBKFreq[1][67] = 556;
  1144. GBKFreq[75][172] = 555;
  1145. GBKFreq[74][185] = 554;
  1146. GBKFreq[53][160] = 553;
  1147. GBKFreq[123][14] = 552;
  1148. GBKFreq[79][97] = 551;
  1149. GBKFreq[85][110] = 550;
  1150. GBKFreq[78][171] = 549;
  1151. GBKFreq[52][131] = 548;
  1152. GBKFreq[56][100] = 547;
  1153. GBKFreq[50][182] = 546;
  1154. GBKFreq[94][64] = 545;
  1155. GBKFreq[106][74] = 544;
  1156. GBKFreq[11][102] = 543;
  1157. GBKFreq[53][124] = 542;
  1158. GBKFreq[24][3] = 541;
  1159. GBKFreq[86][148] = 540;
  1160. GBKFreq[53][184] = 539;
  1161. GBKFreq[86][147] = 538;
  1162. GBKFreq[96][161] = 537;
  1163. GBKFreq[82][77] = 536;
  1164. GBKFreq[59][146] = 535;
  1165. GBKFreq[84][126] = 534;
  1166. GBKFreq[79][132] = 533;
  1167. GBKFreq[85][123] = 532;
  1168. GBKFreq[71][101] = 531;
  1169. GBKFreq[85][106] = 530;
  1170. GBKFreq[6][184] = 529;
  1171. GBKFreq[57][156] = 528;
  1172. GBKFreq[75][104] = 527;
  1173. GBKFreq[50][137] = 526;
  1174. GBKFreq[79][133] = 525;
  1175. GBKFreq[76][108] = 524;
  1176. GBKFreq[57][142] = 523;
  1177. GBKFreq[84][130] = 522;
  1178. GBKFreq[52][128] = 521;
  1179. GBKFreq[47][44] = 520;
  1180. GBKFreq[52][152] = 519;
  1181. GBKFreq[54][104] = 518;
  1182. GBKFreq[30][47] = 517;
  1183. GBKFreq[71][123] = 516;
  1184. GBKFreq[52][107] = 515;
  1185. GBKFreq[45][84] = 514;
  1186. GBKFreq[107][118] = 513;
  1187. GBKFreq[5][161] = 512;
  1188. GBKFreq[48][126] = 511;
  1189. GBKFreq[67][170] = 510;
  1190. GBKFreq[43][6] = 509;
  1191. GBKFreq[70][112] = 508;
  1192. GBKFreq[86][174] = 507;
  1193. GBKFreq[84][166] = 506;
  1194. GBKFreq[79][130] = 505;
  1195. GBKFreq[57][141] = 504;
  1196. GBKFreq[81][178] = 503;
  1197. GBKFreq[56][187] = 502;
  1198. GBKFreq[81][162] = 501;
  1199. GBKFreq[53][104] = 500;
  1200. GBKFreq[123][35] = 499;
  1201. GBKFreq[70][169] = 498;
  1202. GBKFreq[69][164] = 497;
  1203. GBKFreq[109][61] = 496;
  1204. GBKFreq[73][130] = 495;
  1205. GBKFreq[62][134] = 494;
  1206. GBKFreq[54][125] = 493;
  1207. GBKFreq[79][105] = 492;
  1208. GBKFreq[70][165] = 491;
  1209. GBKFreq[71][189] = 490;
  1210. GBKFreq[23][147] = 489;
  1211. GBKFreq[51][139] = 488;
  1212. GBKFreq[47][137] = 487;
  1213. GBKFreq[77][123] = 486;
  1214. GBKFreq[86][183] = 485;
  1215. GBKFreq[63][173] = 484;
  1216. GBKFreq[79][144] = 483;
  1217. GBKFreq[84][159] = 482;
  1218. GBKFreq[60][91] = 481;
  1219. GBKFreq[66][187] = 480;
  1220. GBKFreq[73][114] = 479;
  1221. GBKFreq[85][56] = 478;
  1222. GBKFreq[71][149] = 477;
  1223. GBKFreq[84][189] = 476;
  1224. GBKFreq[104][31] = 475;
  1225. GBKFreq[83][82] = 474;
  1226. GBKFreq[68][35] = 473;
  1227. GBKFreq[11][77] = 472;
  1228. GBKFreq[15][155] = 471;
  1229. GBKFreq[83][153] = 470;
  1230. GBKFreq[71][1] = 469;
  1231. GBKFreq[53][190] = 468;
  1232. GBKFreq[50][135] = 467;
  1233. GBKFreq[3][147] = 466;
  1234. GBKFreq[48][136] = 465;
  1235. GBKFreq[66][166] = 464;
  1236. GBKFreq[55][159] = 463;
  1237. GBKFreq[82][150] = 462;
  1238. GBKFreq[58][178] = 461;
  1239. GBKFreq[64][102] = 460;
  1240. GBKFreq[16][106] = 459;
  1241. GBKFreq[68][110] = 458;
  1242. GBKFreq[54][14] = 457;
  1243. GBKFreq[60][140] = 456;
  1244. GBKFreq[91][71] = 455;
  1245. GBKFreq[54][150] = 454;
  1246. GBKFreq[78][177] = 453;
  1247. GBKFreq[78][117] = 452;
  1248. GBKFreq[104][12] = 451;
  1249. GBKFreq[73][150] = 450;
  1250. GBKFreq[51][142] = 449;
  1251. GBKFreq[81][145] = 448;
  1252. GBKFreq[66][183] = 447;
  1253. GBKFreq[51][178] = 446;
  1254. GBKFreq[75][107] = 445;
  1255. GBKFreq[65][119] = 444;
  1256. GBKFreq[69][176] = 443;
  1257. GBKFreq[59][122] = 442;
  1258. GBKFreq[78][160] = 441;
  1259. GBKFreq[85][183] = 440;
  1260. GBKFreq[105][16] = 439;
  1261. GBKFreq[73][110] = 438;
  1262. GBKFreq[104][39] = 437;
  1263. GBKFreq[119][16] = 436;
  1264. GBKFreq[76][162] = 435;
  1265. GBKFreq[67][152] = 434;
  1266. GBKFreq[82][24] = 433;
  1267. GBKFreq[73][121] = 432;
  1268. GBKFreq[83][83] = 431;
  1269. GBKFreq[82][145] = 430;
  1270. GBKFreq[49][133] = 429;
  1271. GBKFreq[94][13] = 428;
  1272. GBKFreq[58][139] = 427;
  1273. GBKFreq[74][189] = 426;
  1274. GBKFreq[66][177] = 425;
  1275. GBKFreq[85][184] = 424;
  1276. GBKFreq[55][183] = 423;
  1277. GBKFreq[71][107] = 422;
  1278. GBKFreq[11][98] = 421;
  1279. GBKFreq[72][153] = 420;
  1280. GBKFreq[2][137] = 419;
  1281. GBKFreq[59][147] = 418;
  1282. GBKFreq[58][152] = 417;
  1283. GBKFreq[55][144] = 416;
  1284. GBKFreq[73][125] = 415;
  1285. GBKFreq[52][154] = 414;
  1286. GBKFreq[70][178] = 413;
  1287. GBKFreq[79][148] = 412;
  1288. GBKFreq[63][143] = 411;
  1289. GBKFreq[50][140] = 410;
  1290. GBKFreq[47][145] = 409;
  1291. GBKFreq[48][123] = 408;
  1292. GBKFreq[56][107] = 407;
  1293. GBKFreq[84][83] = 406;
  1294. GBKFreq[59][112] = 405;
  1295. GBKFreq[124][72] = 404;
  1296. GBKFreq[79][99] = 403;
  1297. GBKFreq[3][37] = 402;
  1298. GBKFreq[114][55] = 401;
  1299. GBKFreq[85][152] = 400;
  1300. GBKFreq[60][47] = 399;
  1301. GBKFreq[65][96] = 398;
  1302. GBKFreq[74][110] = 397;
  1303. GBKFreq[86][182] = 396;
  1304. GBKFreq[50][99] = 395;
  1305. GBKFreq[67][186] = 394;
  1306. GBKFreq[81][74] = 393;
  1307. GBKFreq[80][37] = 392;
  1308. GBKFreq[21][60] = 391;
  1309. GBKFreq[110][12] = 390;
  1310. GBKFreq[60][162] = 389;
  1311. GBKFreq[29][115] = 388;
  1312. GBKFreq[83][130] = 387;
  1313. GBKFreq[52][136] = 386;
  1314. GBKFreq[63][114] = 385;
  1315. GBKFreq[49][127] = 384;
  1316. GBKFreq[83][109] = 383;
  1317. GBKFreq[66][128] = 382;
  1318. GBKFreq[78][136] = 381;
  1319. GBKFreq[81][180] = 380;
  1320. GBKFreq[76][104] = 379;
  1321. GBKFreq[56][156] = 378;
  1322. GBKFreq[61][23] = 377;
  1323. GBKFreq[4][30] = 376;
  1324. GBKFreq[69][154] = 375;
  1325. GBKFreq[100][37] = 374;
  1326. GBKFreq[54][177] = 373;
  1327. GBKFreq[23][119] = 372;
  1328. GBKFreq[71][171] = 371;
  1329. GBKFreq[84][146] = 370;
  1330. GBKFreq[20][184] = 369;
  1331. GBKFreq[86][76] = 368;
  1332. GBKFreq[74][132] = 367;
  1333. GBKFreq[47][97] = 366;
  1334. GBKFreq[82][137] = 365;
  1335. GBKFreq[94][56] = 364;
  1336. GBKFreq[92][30] = 363;
  1337. GBKFreq[19][117] = 362;
  1338. GBKFreq[48][173] = 361;
  1339. GBKFreq[2][136] = 360;
  1340. GBKFreq[7][182] = 359;
  1341. GBKFreq[74][188] = 358;
  1342. GBKFreq[14][132] = 357;
  1343. GBKFreq[62][172] = 356;
  1344. GBKFreq[25][39] = 355;
  1345. GBKFreq[85][129] = 354;
  1346. GBKFreq[64][98] = 353;
  1347. GBKFreq[67][127] = 352;
  1348. GBKFreq[72][167] = 351;
  1349. GBKFreq[57][143] = 350;
  1350. GBKFreq[76][187] = 349;
  1351. GBKFreq[83][181] = 348;
  1352. GBKFreq[84][10] = 347;
  1353. GBKFreq[55][166] = 346;
  1354. GBKFreq[55][188] = 345;
  1355. GBKFreq[13][151] = 344;
  1356. GBKFreq[62][124] = 343;
  1357. GBKFreq[53][136] = 342;
  1358. GBKFreq[106][57] = 341;
  1359. GBKFreq[47][166] = 340;
  1360. GBKFreq[109][30] = 339;
  1361. GBKFreq[78][114] = 338;
  1362. GBKFreq[83][19] = 337;
  1363. GBKFreq[56][162] = 336;
  1364. GBKFreq[60][177] = 335;
  1365. GBKFreq[88][9] = 334;
  1366. GBKFreq[74][163] = 333;
  1367. GBKFreq[52][156] = 332;
  1368. GBKFreq[71][180] = 331;
  1369. GBKFreq[60][57] = 330;
  1370. GBKFreq[72][173] = 329;
  1371. GBKFreq[82][91] = 328;
  1372. GBKFreq[51][186] = 327;
  1373. GBKFreq[75][86] = 326;
  1374. GBKFreq[75][78] = 325;
  1375. GBKFreq[76][170] = 324;
  1376. GBKFreq[60][147] = 323;
  1377. GBKFreq[82][75] = 322;
  1378. GBKFreq[80][148] = 321;
  1379. GBKFreq[86][150] = 320;
  1380. GBKFreq[13][95] = 319;
  1381. GBKFreq[0][11] = 318;
  1382. GBKFreq[84][190] = 317;
  1383. GBKFreq[76][166] = 316;
  1384. GBKFreq[14][72] = 315;
  1385. GBKFreq[67][144] = 314;
  1386. GBKFreq[84][44] = 313;
  1387. GBKFreq[72][125] = 312;
  1388. GBKFreq[66][127] = 311;
  1389. GBKFreq[60][25] = 310;
  1390. GBKFreq[70][146] = 309;
  1391. GBKFreq[79][135] = 308;
  1392. GBKFreq[54][135] = 307;
  1393. GBKFreq[60][104] = 306;
  1394. GBKFreq[55][132] = 305;
  1395. GBKFreq[94][2] = 304;
  1396. GBKFreq[54][133] = 303;
  1397. GBKFreq[56][190] = 302;
  1398. GBKFreq[58][174] = 301;
  1399. GBKFreq[80][144] = 300;
  1400. GBKFreq[85][113] = 299;
  1401. #endregion
  1402. }
  1403. if (Big5Freq[0] == null)
  1404. {
  1405. for (i = 0; i < 94; i++)
  1406. {
  1407. Big5Freq[i] = new int[158];
  1408. }
  1409. #region Big5Freq[9][89] = 600;
  1410. Big5Freq[11][15] = 599;
  1411. Big5Freq[3][66] = 598;
  1412. Big5Freq[6][121] = 597;
  1413. Big5Freq[3][0] = 596;
  1414. Big5Freq[5][82] = 595;
  1415. Big5Freq[3][42] = 594;
  1416. Big5Freq[5][34] = 593;
  1417. Big5Freq[3][8] = 592;
  1418. Big5Freq[3][6] = 591;
  1419. Big5Freq[3][67] = 590;
  1420. Big5Freq[7][139] = 589;
  1421. Big5Freq[23][137] = 588;
  1422. Big5Freq[12][46] = 587;
  1423. Big5Freq[4][8] = 586;
  1424. Big5Freq[4][41] = 585;
  1425. Big5Freq[18][47] = 584;
  1426. Big5Freq[12][114] = 583;
  1427. Big5Freq[6][1] = 582;
  1428. Big5Freq[22][60] = 581;
  1429. Big5Freq[5][46] = 580;
  1430. Big5Freq[11][79] = 579;
  1431. Big5Freq[3][23] = 578;
  1432. Big5Freq[7][114] = 577;
  1433. Big5Freq[29][102] = 576;
  1434. Big5Freq[19][14] = 575;
  1435. Big5Freq[4][133] = 574;
  1436. Big5Freq[3][29] = 573;
  1437. Big5Freq[4][109] = 572;
  1438. Big5Freq[14][127] = 571;
  1439. Big5Freq[5][48] = 570;
  1440. Big5Freq[13][104] = 569;
  1441. Big5Freq[3][132] = 568;
  1442. Big5Freq[26][64] = 567;
  1443. Big5Freq[7][19] = 566;
  1444. Big5Freq[4][12] = 565;
  1445. Big5Freq[11][124] = 564;
  1446. Big5Freq[7][89] = 563;
  1447. Big5Freq[15][124] = 562;
  1448. Big5Freq[4][108] = 561;
  1449. Big5Freq[19][66] = 560;
  1450. Big5Freq[3][21] = 559;
  1451. Big5Freq[24][12] = 558;
  1452. Big5Freq[28][111] = 557;
  1453. Big5Freq[12][107] = 556;
  1454. Big5Freq[3][112] = 555;
  1455. Big5Freq[8][113] = 554;
  1456. Big5Freq[5][40] = 553;
  1457. Big5Freq[26][145] = 552;
  1458. Big5Freq[3][48] = 551;
  1459. Big5Freq[3][70] = 550;
  1460. Big5Freq[22][17] = 549;
  1461. Big5Freq[16][47] = 548;
  1462. Big5Freq[3][53] = 547;
  1463. Big5Freq[4][24] = 546;
  1464. Big5Freq[32][120] = 545;
  1465. Big5Freq[24][49] = 544;
  1466. Big5Freq[24][142] = 543;
  1467. Big5Freq[18][66] = 542;
  1468. Big5Freq[29][150] = 541;
  1469. Big5Freq[5][122] = 540;
  1470. Big5Freq[5][114] = 539;
  1471. Big5Freq[3][44] = 538;
  1472. Big5Freq[10][128] = 537;
  1473. Big5Freq[15][20] = 536;
  1474. Big5Freq[13][33] = 535;
  1475. Big5Freq[14][87] = 534;
  1476. Big5Freq[3][126] = 533;
  1477. Big5Freq[4][53] = 532;
  1478. Big5Freq[4][40] = 531;
  1479. Big5Freq[9][93] = 530;
  1480. Big5Freq[15][137] = 529;
  1481. Big5Freq[10][123] = 528;
  1482. Big5Freq[4][56] = 527;
  1483. Big5Freq[5][71] = 526;
  1484. Big5Freq[10][8] = 525;
  1485. Big5Freq[5][16] = 524;
  1486. Big5Freq[5][146] = 523;
  1487. Big5Freq[18][88] = 522;
  1488. Big5Freq[24][4] = 521;
  1489. Big5Freq[20][47] = 520;
  1490. Big5Freq[5][33] = 519;
  1491. Big5Freq[9][43] = 518;
  1492. Big5Freq[20][12] = 517;
  1493. Big5Freq[20][13] = 516;
  1494. Big5Freq[5][156] = 515;
  1495. Big5Freq[22][140] = 514;
  1496. Big5Freq[8][146] = 513;
  1497. Big5Freq[21][123] = 512;
  1498. Big5Freq[4][90] = 511;
  1499. Big5Freq[5][62] = 510;
  1500. Big5Freq[17][59] = 509;
  1501. Big5Freq[10][37] = 508;
  1502. Big5Freq[18][107] = 507;
  1503. Big5Freq[14][53] = 506;
  1504. Big5Freq[22][51] = 505;
  1505. Big5Freq[8][13] = 504;
  1506. Big5Freq[5][29] = 503;
  1507. Big5Freq[9][7] = 502;
  1508. Big5Freq[22][14] = 501;
  1509. Big5Freq[8][55] = 500;
  1510. Big5Freq[33][9] = 499;
  1511. Big5Freq[16][64] = 498;
  1512. Big5Freq[7][131] = 497;
  1513. Big5Freq[34][4] = 496;
  1514. Big5Freq[7][101] = 495;
  1515. Big5Freq[11][139] = 494;
  1516. Big5Freq[3][135] = 493;
  1517. Big5Freq[7][102] = 492;
  1518. Big5Freq[17][13] = 491;
  1519. Big5Freq[3][20] = 490;
  1520. Big5Freq[27][106] = 489;
  1521. Big5Freq[5][88] = 488;
  1522. Big5Freq[6][33] = 487;
  1523. Big5Freq[5][139] = 486;
  1524. Big5Freq[6][0] = 485;
  1525. Big5Freq[17][58] = 484;
  1526. Big5Freq[5][133] = 483;
  1527. Big5Freq[9][107] = 482;
  1528. Big5Freq[23][39] = 481;
  1529. Big5Freq[5][23] = 480;
  1530. Big5Freq[3][79] = 479;
  1531. Big5Freq[32][97] = 478;
  1532. Big5Freq[3][136] = 477;
  1533. Big5Freq[4][94] = 476;
  1534. Big5Freq[21][61] = 475;
  1535. Big5Freq[23][123] = 474;
  1536. Big5Freq[26][16] = 473;
  1537. Big5Freq[24][137] = 472;
  1538. Big5Freq[22][18] = 471;
  1539. Big5Freq[5][1] = 470;
  1540. Big5Freq[20][119] = 469;
  1541. Big5Freq[3][7] = 468;
  1542. Big5Freq[10][79] = 467;
  1543. Big5Freq[15][105] = 466;
  1544. Big5Freq[3][144] = 465;
  1545. Big5Freq[12][80] = 464;
  1546. Big5Freq[15][73] = 463;
  1547. Big5Freq[3][19] = 462;
  1548. Big5Freq[8][109] = 461;
  1549. Big5Freq[3][15] = 460;
  1550. Big5Freq[31][82] = 459;
  1551. Big5Freq[3][43] = 458;
  1552. Big5Freq[25][119] = 457;
  1553. Big5Freq[16][111] = 456;
  1554. Big5Freq[7][77] = 455;
  1555. Big5Freq[3][95] = 454;
  1556. Big5Freq[24][82] = 453;
  1557. Big5Freq[7][52] = 452;
  1558. Big5Freq[9][151] = 451;
  1559. Big5Freq[3][129] = 450;
  1560. Big5Freq[5][87] = 449;
  1561. Big5Freq[3][55] = 448;
  1562. Big5Freq[8][153] = 447;
  1563. Big5Freq[4][83] = 446;
  1564. Big5Freq[3][114] = 445;
  1565. Big5Freq[23][147] = 444;
  1566. Big5Freq[15][31] = 443;
  1567. Big5Freq[3][54] = 442;
  1568. Big5Freq[11][122] = 441;
  1569. Big5Freq[4][4] = 440;
  1570. Big5Freq[34][149] = 439;
  1571. Big5Freq[3][17] = 438;
  1572. Big5Freq[21][64] = 437;
  1573. Big5Freq[26][144] = 436;
  1574. Big5Freq[4][62] = 435;
  1575. Big5Freq[8][15] = 434;
  1576. Big5Freq[35][80] = 433;
  1577. Big5Freq[7][110] = 432;
  1578. Big5Freq[23][114] = 431;
  1579. Big5Freq[3][108] = 430;
  1580. Big5Freq[3][62] = 429;
  1581. Big5Freq[21][41] = 428;
  1582. Big5Freq[15][99] = 427;
  1583. Big5Freq[5][47] = 426;
  1584. Big5Freq[4][96] = 425;
  1585. Big5Freq[20][122] = 424;
  1586. Big5Freq[5][21] = 423;
  1587. Big5Freq[4][157] = 422;
  1588. Big5Freq[16][14] = 421;
  1589. Big5Freq[3][117] = 420;
  1590. Big5Freq[7][129] = 419;
  1591. Big5Freq[4][27] = 418;
  1592. Big5Freq[5][30] = 417;
  1593. Big5Freq[22][16] = 416;
  1594. Big5Freq[5][64] = 415;
  1595. Big5Freq[17][99] = 414;
  1596. Big5Freq[17][57] = 413;
  1597. Big5Freq[8][105] = 412;
  1598. Big5Freq[5][112] = 411;
  1599. Big5Freq[20][59] = 410;
  1600. Big5Freq[6][129] = 409;
  1601. Big5Freq[18][17] = 408;
  1602. Big5Freq[3][92] = 407;
  1603. Big5Freq[28][118] = 406;
  1604. Big5Freq[3][109] = 405;
  1605. Big5Freq[31][51] = 404;
  1606. Big5Freq[13][116] = 403;
  1607. Big5Freq[6][15] = 402;
  1608. Big5Freq[36][136] = 401;
  1609. Big5Freq[12][74] = 400;
  1610. Big5Freq[20][88] = 399;
  1611. Big5Freq[36][68] = 398;
  1612. Big5Freq[3][147] = 397;
  1613. Big5Freq[15][84] = 396;
  1614. Big5Freq[16][32] = 395;
  1615. Big5Freq[16][58] = 394;
  1616. Big5Freq[7][66] = 393;
  1617. Big5Freq[23][107] = 392;
  1618. Big5Freq[9][6] = 391;
  1619. Big5Freq[12][86] = 390;
  1620. Big5Freq[23][112] = 389;
  1621. Big5Freq[37][23] = 388;
  1622. Big5Freq[3][138] = 387;
  1623. Big5Freq[20][68] = 386;
  1624. Big5Freq[15][116] = 385;
  1625. Big5Freq[18][64] = 384;
  1626. Big5Freq[12][139] = 383;
  1627. Big5Freq[11][155] = 382;
  1628. Big5Freq[4][156] = 381;
  1629. Big5Freq[12][84] = 380;
  1630. Big5Freq[18][49] = 379;
  1631. Big5Freq[25][125] = 378;
  1632. Big5Freq[25][147] = 377;
  1633. Big5Freq[15][110] = 376;
  1634. Big5Freq[19][96] = 375;
  1635. Big5Freq[30][152] = 374;
  1636. Big5Freq[6][31] = 373;
  1637. Big5Freq[27][117] = 372;
  1638. Big5Freq[3][10] = 371;
  1639. Big5Freq[6][131] = 370;
  1640. Big5Freq[13][112] = 369;
  1641. Big5Freq[36][156] = 368;
  1642. Big5Freq[4][60] = 367;
  1643. Big5Freq[15][121] = 366;
  1644. Big5Freq[4][112] = 365;
  1645. Big5Freq[30][142] = 364;
  1646. Big5Freq[23][154] = 363;
  1647. Big5Freq[27][101] = 362;
  1648. Big5Freq[9][140] = 361;
  1649. Big5Freq[3][89] = 360;
  1650. Big5Freq[18][148] = 359;
  1651. Big5Freq[4][69] = 358;
  1652. Big5Freq[16][49] = 357;
  1653. Big5Freq[6][117] = 356;
  1654. Big5Freq[36][55] = 355;
  1655. Big5Freq[5][123] = 354;
  1656. Big5Freq[4][126] = 353;
  1657. Big5Freq[4][119] = 352;
  1658. Big5Freq[9][95] = 351;
  1659. Big5Freq[5][24] = 350;
  1660. Big5Freq[16][133] = 349;
  1661. Big5Freq[10][134] = 348;
  1662. Big5Freq[26][59] = 347;
  1663. Big5Freq[6][41] = 346;
  1664. Big5Freq[6][146] = 345;
  1665. Big5Freq[19][24] = 344;
  1666. Big5Freq[5][113] = 343;
  1667. Big5Freq[10][118] = 342;
  1668. Big5Freq[34][151] = 341;
  1669. Big5Freq[9][72] = 340;
  1670. Big5Freq[31][25] = 339;
  1671. Big5Freq[18][126] = 338;
  1672. Big5Freq[18][28] = 337;
  1673. Big5Freq[4][153] = 336;
  1674. Big5Freq[3][84] = 335;
  1675. Big5Freq[21][18] = 334;
  1676. Big5Freq[25][129] = 333;
  1677. Big5Freq[6][107] = 332;
  1678. Big5Freq[12][25] = 331;
  1679. Big5Freq[17][109] = 330;
  1680. Big5Freq[7][76] = 329;
  1681. Big5Freq[15][15] = 328;
  1682. Big5Freq[4][14] = 327;
  1683. Big5Freq[23][88] = 326;
  1684. Big5Freq[18][2] = 325;
  1685. Big5Freq[6][88] = 324;
  1686. Big5Freq[16][84] = 323;
  1687. Big5Freq[12][48] = 322;
  1688. Big5Freq[7][68] = 321;
  1689. Big5Freq[5][50] = 320;
  1690. Big5Freq[13][54] = 319;
  1691. Big5Freq[7][98] = 318;
  1692. Big5Freq[11][6] = 317;
  1693. Big5Freq[9][80] = 316;
  1694. Big5Freq[16][41] = 315;
  1695. Big5Freq[7][43] = 314;
  1696. Big5Freq[28][117] = 313;
  1697. Big5Freq[3][51] = 312;
  1698. Big5Freq[7][3] = 311;
  1699. Big5Freq[20][81] = 310;
  1700. Big5Freq[4][2] = 309;
  1701. Big5Freq[11][16] = 308;
  1702. Big5Freq[10][4] = 307;
  1703. Big5Freq[10][119] = 306;
  1704. Big5Freq[6][142] = 305;
  1705. Big5Freq[18][51] = 304;
  1706. Big5Freq[8][144] = 303;
  1707. Big5Freq[10][65] = 302;
  1708. Big5Freq[11][64] = 301;
  1709. Big5Freq[11][130] = 300;
  1710. Big5Freq[9][92] = 299;
  1711. Big5Freq[18][29] = 298;
  1712. Big5Freq[18][78] = 297;
  1713. Big5Freq[18][151] = 296;
  1714. Big5Freq[33][127] = 295;
  1715. Big5Freq[35][113] = 294;
  1716. Big5Freq[10][155] = 293;
  1717. Big5Freq[3][76] = 292;
  1718. Big5Freq[36][123] = 291;
  1719. Big5Freq[13][143] = 290;
  1720. Big5Freq[5][135] = 289;
  1721. Big5Freq[23][116] = 288;
  1722. Big5Freq[6][101] = 287;
  1723. Big5Freq[14][74] = 286;
  1724. Big5Freq[7][153] = 285;
  1725. Big5Freq[3][101] = 284;
  1726. Big5Freq[9][74] = 283;
  1727. Big5Freq[3][156] = 282;
  1728. Big5Freq[4][147] = 281;
  1729. Big5Freq[9][12] = 280;
  1730. Big5Freq[18][133] = 279;
  1731. Big5Freq[4][0] = 278;
  1732. Big5Freq[7][155] = 277;
  1733. Big5Freq[9][144] = 276;
  1734. Big5Freq[23][49] = 275;
  1735. Big5Freq[5][89] = 274;
  1736. Big5Freq[10][11] = 273;
  1737. Big5Freq[3][110] = 272;
  1738. Big5Freq[3][40] = 271;
  1739. Big5Freq[29][115] = 270;
  1740. Big5Freq[9][100] = 269;
  1741. Big5Freq[21][67] = 268;
  1742. Big5Freq[23][145] = 267;
  1743. Big5Freq[10][47] = 266;
  1744. Big5Freq[4][31] = 265;
  1745. Big5Freq[4][81] = 264;
  1746. Big5Freq[22][62] = 263;
  1747. Big5Freq[4][28] = 262;
  1748. Big5Freq[27][39] = 261;
  1749. Big5Freq[27][54] = 260;
  1750. Big5Freq[32][46] = 259;
  1751. Big5Freq[4][76] = 258;
  1752. Big5Freq[26][15] = 257;
  1753. Big5Freq[12][154] = 256;
  1754. Big5Freq[9][150] = 255;
  1755. Big5Freq[15][17] = 254;
  1756. Big5Freq[5][129] = 253;
  1757. Big5Freq[10][40] = 252;
  1758. Big5Freq[13][37] = 251;
  1759. Big5Freq[31][104] = 250;
  1760. Big5Freq[3][152] = 249;
  1761. Big5Freq[5][22] = 248;
  1762. Big5Freq[8][48] = 247;
  1763. Big5Freq[4][74] = 246;
  1764. Big5Freq[6][17] = 245;
  1765. Big5Freq[30][82] = 244;
  1766. Big5Freq[4][116] = 243;
  1767. Big5Freq[16][42] = 242;
  1768. Big5Freq[5][55] = 241;
  1769. Big5Freq[4][64] = 240;
  1770. Big5Freq[14][19] = 239;
  1771. Big5Freq[35][82] = 238;
  1772. Big5Freq[30][139] = 237;
  1773. Big5Freq[26][152] = 236;
  1774. Big5Freq[32][32] = 235;
  1775. Big5Freq[21][102] = 234;
  1776. Big5Freq[10][131] = 233;
  1777. Big5Freq[9][128] = 232;
  1778. Big5Freq[3][87] = 231;
  1779. Big5Freq[4][51] = 230;
  1780. Big5Freq[10][15] = 229;
  1781. Big5Freq[4][150] = 228;
  1782. Big5Freq[7][4] = 227;
  1783. Big5Freq[7][51] = 226;
  1784. Big5Freq[7][157] = 225;
  1785. Big5Freq[4][146] = 224;
  1786. Big5Freq[4][91] = 223;
  1787. Big5Freq[7][13] = 222;
  1788. Big5Freq[17][116] = 221;
  1789. Big5Freq[23][21] = 220;
  1790. Big5Freq[5][106] = 219;
  1791. Big5Freq[14][100] = 218;
  1792. Big5Freq[10][152] = 217;
  1793. Big5Freq[14][89] = 216;
  1794. Big5Freq[6][138] = 215;
  1795. Big5Freq[12][157] = 214;
  1796. Big5Freq[10][102] = 213;
  1797. Big5Freq[19][94] = 212;
  1798. Big5Freq[7][74] = 211;
  1799. Big5Freq[18][128] = 210;
  1800. Big5Freq[27][111] = 209;
  1801. Big5Freq[11][57] = 208;
  1802. Big5Freq[3][131] = 207;
  1803. Big5Freq[30][23] = 206;
  1804. Big5Freq[30][126] = 205;
  1805. Big5Freq[4][36] = 204;
  1806. Big5Freq[26][124] = 203;
  1807. Big5Freq[4][19] = 202;
  1808. Big5Freq[9][152] = 201;
  1809. #endregion
  1810. }
  1811. if (EUC_TWFreq[0] == null)
  1812. {
  1813. for (i = 0; i < 94; i++)
  1814. {
  1815. EUC_TWFreq[i] = new int[94];
  1816. }
  1817. #region EUC_TWFreq[48][49] = 599;
  1818. EUC_TWFreq[35][65] = 598;
  1819. EUC_TWFreq[41][27] = 597;
  1820. EUC_TWFreq[35][0] = 596;
  1821. EUC_TWFreq[39][19] = 595;
  1822. EUC_TWFreq[35][42] = 594;
  1823. EUC_TWFreq[38][66] = 593;
  1824. EUC_TWFreq[35][8] = 592;
  1825. EUC_TWFreq[35][6] = 591;
  1826. EUC_TWFreq[35][66] = 590;
  1827. EUC_TWFreq[43][14] = 589;
  1828. EUC_TWFreq[69][80] = 588;
  1829. EUC_TWFreq[50][48] = 587;
  1830. EUC_TWFreq[36][71] = 586;
  1831. EUC_TWFreq[37][10] = 585;
  1832. EUC_TWFreq[60][52] = 584;
  1833. EUC_TWFreq[51][21] = 583;
  1834. EUC_TWFreq[40][2] = 582;
  1835. EUC_TWFreq[67][35] = 581;
  1836. EUC_TWFreq[38][78] = 580;
  1837. EUC_TWFreq[49][18] = 579;
  1838. EUC_TWFreq[35][23] = 578;
  1839. EUC_TWFreq[42][83] = 577;
  1840. EUC_TWFreq[79][47] = 576;
  1841. EUC_TWFreq[61][82] = 575;
  1842. EUC_TWFreq[38][7] = 574;
  1843. EUC_TWFreq[35][29] = 573;
  1844. EUC_TWFreq[37][77] = 572;
  1845. EUC_TWFreq[54][67] = 571;
  1846. EUC_TWFreq[38][80] = 570;
  1847. EUC_TWFreq[52][74] = 569;
  1848. EUC_TWFreq[36][37] = 568;
  1849. EUC_TWFreq[74][8] = 567;
  1850. EUC_TWFreq[41][83] = 566;
  1851. EUC_TWFreq[36][75] = 565;
  1852. EUC_TWFreq[49][63] = 564;
  1853. EUC_TWFreq[42][58] = 563;
  1854. EUC_TWFreq[56][33] = 562;
  1855. EUC_TWFreq[37][76] = 561;
  1856. EUC_TWFreq[62][39] = 560;
  1857. EUC_TWFreq[35][21] = 559;
  1858. EUC_TWFreq[70][19] = 558;
  1859. EUC_TWFreq[77][88] = 557;
  1860. EUC_TWFreq[51][14] = 556;
  1861. EUC_TWFreq[36][17] = 555;
  1862. EUC_TWFreq[44][51] = 554;
  1863. EUC_TWFreq[38][72] = 553;
  1864. EUC_TWFreq[74][90] = 552;
  1865. EUC_TWFreq[35][48] = 551;
  1866. EUC_TWFreq[35][69] = 550;
  1867. EUC_TWFreq[66][86] = 549;
  1868. EUC_TWFreq[57][20] = 548;
  1869. EUC_TWFreq[35][53] = 547;
  1870. EUC_TWFreq[36][87] = 546;
  1871. EUC_TWFreq[84][67] = 545;
  1872. EUC_TWFreq[70][56] = 544;
  1873. EUC_TWFreq[71][54] = 543;
  1874. EUC_TWFreq[60][70] = 542;
  1875. EUC_TWFreq[80][1] = 541;
  1876. EUC_TWFreq[39][59] = 540;
  1877. EUC_TWFreq[39][51] = 539;
  1878. EUC_TWFreq[35][44] = 538;
  1879. EUC_TWFreq[48][4] = 537;
  1880. EUC_TWFreq[55][24] = 536;
  1881. EUC_TWFreq[52][4] = 535;
  1882. EUC_TWFreq[54][26] = 534;
  1883. EUC_TWFreq[36][31] = 533;
  1884. EUC_TWFreq[37][22] = 532;
  1885. EUC_TWFreq[37][9] = 531;
  1886. EUC_TWFreq[46][0] = 530;
  1887. EUC_TWFreq[56][46] = 529;
  1888. EUC_TWFreq[47][93] = 528;
  1889. EUC_TWFreq[37][25] = 527;
  1890. EUC_TWFreq[39][8] = 526;
  1891. EUC_TWFreq[46][73] = 525;
  1892. EUC_TWFreq[38][48] = 524;
  1893. EUC_TWFreq[39][83] = 523;
  1894. EUC_TWFreq[60][92] = 522;
  1895. EUC_TWFreq[70][11] = 521;
  1896. EUC_TWFreq[63][84] = 520;
  1897. EUC_TWFreq[38][65] = 519;
  1898. EUC_TWFreq[45][45] = 518;
  1899. EUC_TWFreq[63][49] = 517;
  1900. EUC_TWFreq[63][50] = 516;
  1901. EUC_TWFreq[39][93] = 515;
  1902. EUC_TWFreq[68][20] = 514;
  1903. EUC_TWFreq[44][84] = 513;
  1904. EUC_TWFreq[66][34] = 512;
  1905. EUC_TWFreq[37][58] = 511;
  1906. EUC_TWFreq[39][0] = 510;
  1907. EUC_TWFreq[59][1] = 509;
  1908. EUC_TWFreq[47][8] = 508;
  1909. EUC_TWFreq[61][17] = 507;
  1910. EUC_TWFreq[53][87] = 506;
  1911. EUC_TWFreq[67][26] = 505;
  1912. EUC_TWFreq[43][46] = 504;
  1913. EUC_TWFreq[38][61] = 503;
  1914. EUC_TWFreq[45][9] = 502;
  1915. EUC_TWFreq[66][83] = 501;
  1916. EUC_TWFreq[43][88] = 500;
  1917. EUC_TWFreq[85][20] = 499;
  1918. EUC_TWFreq[57][36] = 498;
  1919. EUC_TWFreq[43][6] = 497;
  1920. EUC_TWFreq[86][77] = 496;
  1921. EUC_TWFreq[42][70] = 495;
  1922. EUC_TWFreq[49][78] = 494;
  1923. EUC_TWFreq[36][40] = 493;
  1924. EUC_TWFreq[42][71] = 492;
  1925. EUC_TWFreq[58][49] = 491;
  1926. EUC_TWFreq[35][20] = 490;
  1927. EUC_TWFreq[76][20] = 489;
  1928. EUC_TWFreq[39][25] = 488;
  1929. EUC_TWFreq[40][34] = 487;
  1930. EUC_TWFreq[39][76] = 486;
  1931. EUC_TWFreq[40][1] = 485;
  1932. EUC_TWFreq[59][0] = 484;
  1933. EUC_TWFreq[39][70] = 483;
  1934. EUC_TWFreq[46][14] = 482;
  1935. EUC_TWFreq[68][77] = 481;
  1936. EUC_TWFreq[38][55] = 480;
  1937. EUC_TWFreq[35][78] = 479;
  1938. EUC_TWFreq[84][44] = 478;
  1939. EUC_TWFreq[36][41] = 477;
  1940. EUC_TWFreq[37][62] = 476;
  1941. EUC_TWFreq[65][67] = 475;
  1942. EUC_TWFreq[69][66] = 474;
  1943. EUC_TWFreq[73][55] = 473;
  1944. EUC_TWFreq[71][49] = 472;
  1945. EUC_TWFreq[66][87] = 471;
  1946. EUC_TWFreq[38][33] = 470;
  1947. EUC_TWFreq[64][61] = 469;
  1948. EUC_TWFreq[35][7] = 468;
  1949. EUC_TWFreq[47][49] = 467;
  1950. EUC_TWFreq[56][14] = 466;
  1951. EUC_TWFreq[36][49] = 465;
  1952. EUC_TWFreq[50][81] = 464;
  1953. EUC_TWFreq[55][76] = 463;
  1954. EUC_TWFreq[35][19] = 462;
  1955. EUC_TWFreq[44][47] = 461;
  1956. EUC_TWFreq[35][15] = 460;
  1957. EUC_TWFreq[82][59] = 459;
  1958. EUC_TWFreq[35][43] = 458;
  1959. EUC_TWFreq[73][0] = 457;
  1960. EUC_TWFreq[57][83] = 456;
  1961. EUC_TWFreq[42][46] = 455;
  1962. EUC_TWFreq[36][0] = 454;
  1963. EUC_TWFreq[70][88] = 453;
  1964. EUC_TWFreq[42][22] = 452;
  1965. EUC_TWFreq[46][58] = 451;
  1966. EUC_TWFreq[36][34] = 450;
  1967. EUC_TWFreq[39][24] = 449;
  1968. EUC_TWFreq[35][55] = 448;
  1969. EUC_TWFreq[44][91] = 447;
  1970. EUC_TWFreq[37][51] = 446;
  1971. EUC_TWFreq[36][19] = 445;
  1972. EUC_TWFreq[69][90] = 444;
  1973. EUC_TWFreq[55][35] = 443;
  1974. EUC_TWFreq[35][54] = 442;
  1975. EUC_TWFreq[49][61] = 441;
  1976. EUC_TWFreq[36][67] = 440;
  1977. EUC_TWFreq[88][34] = 439;
  1978. EUC_TWFreq[35][17] = 438;
  1979. EUC_TWFreq[65][69] = 437;
  1980. EUC_TWFreq[74][89] = 436;
  1981. EUC_TWFreq[37][31] = 435;
  1982. EUC_TWFreq[43][48] = 434;
  1983. EUC_TWFreq[89][27] = 433;
  1984. EUC_TWFreq[42][79] = 432;
  1985. EUC_TWFreq[69][57] = 431;
  1986. EUC_TWFreq[36][13] = 430;
  1987. EUC_TWFreq[35][62] = 429;
  1988. EUC_TWFreq[65][47] = 428;
  1989. EUC_TWFreq[56][8] = 427;
  1990. EUC_TWFreq[38][79] = 426;
  1991. EUC_TWFreq[37][64] = 425;
  1992. EUC_TWFreq[64][64] = 424;
  1993. EUC_TWFreq[38][53] = 423;
  1994. EUC_TWFreq[38][31] = 422;
  1995. EUC_TWFreq[56][81] = 421;
  1996. EUC_TWFreq[36][22] = 420;
  1997. EUC_TWFreq[43][4] = 419;
  1998. EUC_TWFreq[36][90] = 418;
  1999. EUC_TWFreq[38][62] = 417;
  2000. EUC_TWFreq[66][85] = 416;
  2001. EUC_TWFreq[39][1] = 415;
  2002. EUC_TWFreq[59][40] = 414;
  2003. EUC_TWFreq[58][93] = 413;
  2004. EUC_TWFreq[44][43] = 412;
  2005. EUC_TWFreq[39][49] = 411;
  2006. EUC_TWFreq[64][2] = 410;
  2007. EUC_TWFreq[41][35] = 409;
  2008. EUC_TWFreq[60][22] = 408;
  2009. EUC_TWFreq[35][91] = 407;
  2010. EUC_TWFreq[78][1] = 406;
  2011. EUC_TWFreq[36][14] = 405;
  2012. EUC_TWFreq[82][29] = 404;
  2013. EUC_TWFreq[52][86] = 403;
  2014. EUC_TWFreq[40][16] = 402;
  2015. EUC_TWFreq[91][52] = 401;
  2016. EUC_TWFreq[50][75] = 400;
  2017. EUC_TWFreq[64][30] = 399;
  2018. EUC_TWFreq[90][78] = 398;
  2019. EUC_TWFreq[36][52] = 397;
  2020. EUC_TWFreq[55][87] = 396;
  2021. EUC_TWFreq[57][5] = 395;
  2022. EUC_TWFreq[57][31] = 394;
  2023. EUC_TWFreq[42][35] = 393;
  2024. EUC_TWFreq[69][50] = 392;
  2025. EUC_TWFreq[45][8] = 391;
  2026. EUC_TWFreq[50][87] = 390;
  2027. EUC_TWFreq[69][55] = 389;
  2028. EUC_TWFreq[92][3] = 388;
  2029. EUC_TWFreq[36][43] = 387;
  2030. EUC_TWFreq[64][10] = 386;
  2031. EUC_TWFreq[56][25] = 385;
  2032. EUC_TWFreq[60][68] = 384;
  2033. EUC_TWFreq[51][46] = 383;
  2034. EUC_TWFreq[50][0] = 382;
  2035. EUC_TWFreq[38][30] = 381;
  2036. EUC_TWFreq[50][85] = 380;
  2037. EUC_TWFreq[60][54] = 379;
  2038. EUC_TWFreq[73][6] = 378;
  2039. EUC_TWFreq[73][28] = 377;
  2040. EUC_TWFreq[56][19] = 376;
  2041. EUC_TWFreq[62][69] = 375;
  2042. EUC_TWFreq[81][66] = 374;
  2043. EUC_TWFreq[40][32] = 373;
  2044. EUC_TWFreq[76][31] = 372;
  2045. EUC_TWFreq[35][10] = 371;
  2046. EUC_TWFreq[41][37] = 370;
  2047. EUC_TWFreq[52][82] = 369;
  2048. EUC_TWFreq[91][72] = 368;
  2049. EUC_TWFreq[37][29] = 367;
  2050. EUC_TWFreq[56][30] = 366;
  2051. EUC_TWFreq[37][80] = 365;
  2052. EUC_TWFreq[81][56] = 364;
  2053. EUC_TWFreq[70][3] = 363;
  2054. EUC_TWFreq[76][15] = 362;
  2055. EUC_TWFreq[46][47] = 361;
  2056. EUC_TWFreq[35][88] = 360;
  2057. EUC_TWFreq[61][58] = 359;
  2058. EUC_TWFreq[37][37] = 358;
  2059. EUC_TWFreq[57][22] = 357;
  2060. EUC_TWFreq[41][23] = 356;
  2061. EUC_TWFreq[90][66] = 355;
  2062. EUC_TWFreq[39][60] = 354;
  2063. EUC_TWFreq[38][0] = 353;
  2064. EUC_TWFreq[37][87] = 352;
  2065. EUC_TWFreq[46][2] = 351;
  2066. EUC_TWFreq[38][56] = 350;
  2067. EUC_TWFreq[58][11] = 349;
  2068. EUC_TWFreq[48][10] = 348;
  2069. EUC_TWFreq[74][4] = 347;
  2070. EUC_TWFreq[40][42] = 346;
  2071. EUC_TWFreq[41][52] = 345;
  2072. EUC_TWFreq[61][92] = 344;
  2073. EUC_TWFreq[39][50] = 343;
  2074. EUC_TWFreq[47][88] = 342;
  2075. EUC_TWFreq[88][36] = 341;
  2076. EUC_TWFreq[45][73] = 340;
  2077. EUC_TWFreq[82][3] = 339;
  2078. EUC_TWFreq[61][36] = 338;
  2079. EUC_TWFreq[60][33] = 337;
  2080. EUC_TWFreq[38][27] = 336;
  2081. EUC_TWFreq[35][83] = 335;
  2082. EUC_TWFreq[65][24] = 334;
  2083. EUC_TWFreq[73][10] = 333;
  2084. EUC_TWFreq[41][13] = 332;
  2085. EUC_TWFreq[50][27] = 331;
  2086. EUC_TWFreq[59][50] = 330;
  2087. EUC_TWFreq[42][45] = 329;
  2088. EUC_TWFreq[55][19] = 328;
  2089. EUC_TWFreq[36][77] = 327;
  2090. EUC_TWFreq[69][31] = 326;
  2091. EUC_TWFreq[60][7] = 325;
  2092. EUC_TWFreq[40][88] = 324;
  2093. EUC_TWFreq[57][56] = 323;
  2094. EUC_TWFreq[50][50] = 322;
  2095. EUC_TWFreq[42][37] = 321;
  2096. EUC_TWFreq[38][82] = 320;
  2097. EUC_TWFreq[52][25] = 319;
  2098. EUC_TWFreq[42][67] = 318;
  2099. EUC_TWFreq[48][40] = 317;
  2100. EUC_TWFreq[45][81] = 316;
  2101. EUC_TWFreq[57][14] = 315;
  2102. EUC_TWFreq[42][13] = 314;
  2103. EUC_TWFreq[78][0] = 313;
  2104. EUC_TWFreq[35][51] = 312;
  2105. EUC_TWFreq[41][67] = 311;
  2106. EUC_TWFreq[64][23] = 310;
  2107. EUC_TWFreq[36][65] = 309;
  2108. EUC_TWFreq[48][50] = 308;
  2109. EUC_TWFreq[46][69] = 307;
  2110. EUC_TWFreq[47][89] = 306;
  2111. EUC_TWFreq[41][48] = 305;
  2112. EUC_TWFreq[60][56] = 304;
  2113. EUC_TWFreq[44][82] = 303;
  2114. EUC_TWFreq[47][35] = 302;
  2115. EUC_TWFreq[49][3] = 301;
  2116. EUC_TWFreq[49][69] = 300;
  2117. EUC_TWFreq[45][93] = 299;
  2118. EUC_TWFreq[60][34] = 298;
  2119. EUC_TWFreq[60][82] = 297;
  2120. EUC_TWFreq[61][61] = 296;
  2121. EUC_TWFreq[86][42] = 295;
  2122. EUC_TWFreq[89][60] = 294;
  2123. EUC_TWFreq[48][31] = 293;
  2124. EUC_TWFreq[35][75] = 292;
  2125. EUC_TWFreq[91][39] = 291;
  2126. EUC_TWFreq[53][19] = 290;
  2127. EUC_TWFreq[39][72] = 289;
  2128. EUC_TWFreq[69][59] = 288;
  2129. EUC_TWFreq[41][7] = 287;
  2130. EUC_TWFreq[54][13] = 286;
  2131. EUC_TWFreq[43][28] = 285;
  2132. EUC_TWFreq[36][6] = 284;
  2133. EUC_TWFreq[45][75] = 283;
  2134. EUC_TWFreq[36][61] = 282;
  2135. EUC_TWFreq[38][21] = 281;
  2136. EUC_TWFreq[45][14] = 280;
  2137. EUC_TWFreq[61][43] = 279;
  2138. EUC_TWFreq[36][63] = 278;
  2139. EUC_TWFreq[43][30] = 277;
  2140. EUC_TWFreq[46][51] = 276;
  2141. EUC_TWFreq[68][87] = 275;
  2142. EUC_TWFreq[39][26] = 274;
  2143. EUC_TWFreq[46][76] = 273;
  2144. EUC_TWFreq[36][15] = 272;
  2145. EUC_TWFreq[35][40] = 271;
  2146. EUC_TWFreq[79][60] = 270;
  2147. EUC_TWFreq[46][7] = 269;
  2148. EUC_TWFreq[65][72] = 268;
  2149. EUC_TWFreq[69][88] = 267;
  2150. EUC_TWFreq[47][18] = 266;
  2151. EUC_TWFreq[37][0] = 265;
  2152. EUC_TWFreq[37][49] = 264;
  2153. EUC_TWFreq[67][37] = 263;
  2154. EUC_TWFreq[36][91] = 262;
  2155. EUC_TWFreq[75][48] = 261;
  2156. EUC_TWFreq[75][63] = 260;
  2157. EUC_TWFreq[83][87] = 259;
  2158. EUC_TWFreq[37][44] = 258;
  2159. EUC_TWFreq[73][54] = 257;
  2160. EUC_TWFreq[51][61] = 256;
  2161. EUC_TWFreq[46][57] = 255;
  2162. EUC_TWFreq[55][21] = 254;
  2163. EUC_TWFreq[39][66] = 253;
  2164. EUC_TWFreq[47][11] = 252;
  2165. EUC_TWFreq[52][8] = 251;
  2166. EUC_TWFreq[82][81] = 250;
  2167. EUC_TWFreq[36][57] = 249;
  2168. EUC_TWFreq[38][54] = 248;
  2169. EUC_TWFreq[43][81] = 247;
  2170. EUC_TWFreq[37][42] = 246;
  2171. EUC_TWFreq[40][18] = 245;
  2172. EUC_TWFreq[80][90] = 244;
  2173. EUC_TWFreq[37][84] = 243;
  2174. EUC_TWFreq[57][15] = 242;
  2175. EUC_TWFreq[38][87] = 241;
  2176. EUC_TWFreq[37][32] = 240;
  2177. EUC_TWFreq[53][53] = 239;
  2178. EUC_TWFreq[89][29] = 238;
  2179. EUC_TWFreq[81][53] = 237;
  2180. EUC_TWFreq[75][3] = 236;
  2181. EUC_TWFreq[83][73] = 235;
  2182. EUC_TWFreq[66][13] = 234;
  2183. EUC_TWFreq[48][7] = 233;
  2184. EUC_TWFreq[46][35] = 232;
  2185. EUC_TWFreq[35][86] = 231;
  2186. EUC_TWFreq[37][20] = 230;
  2187. EUC_TWFreq[46][80] = 229;
  2188. EUC_TWFreq[38][24] = 228;
  2189. EUC_TWFreq[41][68] = 227;
  2190. EUC_TWFreq[42][21] = 226;
  2191. EUC_TWFreq[43][32] = 225;
  2192. EUC_TWFreq[38][20] = 224;
  2193. EUC_TWFreq[37][59] = 223;
  2194. EUC_TWFreq[41][77] = 222;
  2195. EUC_TWFreq[59][57] = 221;
  2196. EUC_TWFreq[68][59] = 220;
  2197. EUC_TWFreq[39][43] = 219;
  2198. EUC_TWFreq[54][39] = 218;
  2199. EUC_TWFreq[48][28] = 217;
  2200. EUC_TWFreq[54][28] = 216;
  2201. EUC_TWFreq[41][44] = 215;
  2202. EUC_TWFreq[51][64] = 214;
  2203. EUC_TWFreq[47][72] = 213;
  2204. EUC_TWFreq[62][67] = 212;
  2205. EUC_TWFreq[42][43] = 211;
  2206. EUC_TWFreq[61][38] = 210;
  2207. EUC_TWFreq[76][25] = 209;
  2208. EUC_TWFreq[48][91] = 208;
  2209. EUC_TWFreq[36][36] = 207;
  2210. EUC_TWFreq[80][32] = 206;
  2211. EUC_TWFreq[81][40] = 205;
  2212. EUC_TWFreq[37][5] = 204;
  2213. EUC_TWFreq[74][69] = 203;
  2214. EUC_TWFreq[36][82] = 202;
  2215. EUC_TWFreq[46][59] = 201;
  2216. #endregion
  2217. }
  2218. }
  2219. #endregion
  2220. #region ToByteArray.....
  2221. /// <summary>
  2222. /// 将此实例中的指定 <see cref="sbyte"/> 字符数组转换到 <see cref="byte"/> 字符数组。
  2223. /// </summary>
  2224. /// <param name="sbyteArray">要转换的 <see cref="sbyte"/> 字符数组</param>
  2225. /// <returns>返回转换后的 <see cref="byte"/> 字符数组</returns>
  2226. public static byte[] ToByteArray(sbyte[] sbyteArray)
  2227. {
  2228. byte[] byteArray = new byte[sbyteArray.Length];
  2229. for (int index = 0; index < sbyteArray.Length; index++)
  2230. byteArray[index] = (byte)sbyteArray[index];
  2231. return byteArray;
  2232. }
  2233. /// <summary>
  2234. /// 将此实例中的指定字符串转换到 <see cref="byte"/> 字符数组。
  2235. /// </summary>
  2236. /// <param name="sourceString">要转换的字符串</param>
  2237. /// <returns>返回转换后的 <see cref="byte"/> 字符数组</returns>
  2238. public static byte[] ToByteArray(string sourceString)
  2239. {
  2240. byte[] byteArray = new byte[sourceString.Length];
  2241. for (int index = 0; index < sourceString.Length; index++)
  2242. byteArray[index] = (byte)sourceString[index];
  2243. return byteArray;
  2244. }
  2245. /// <summary>
  2246. /// 将此实例中的指定 <see cref="object"/> 数组转换到 <see cref="byte"/> 字符数组。
  2247. /// </summary>
  2248. /// <param name="tempObjectArray">要转换的 <see cref="object"/> 字符数组</param>
  2249. /// <returns>返回转换后的 <see cref="byte"/> 字符数组</returns>
  2250. public static byte[] ToByteArray(object[] tempObjectArray)
  2251. {
  2252. byte[] byteArray = new byte[tempObjectArray.Length];
  2253. for (int index = 0; index < tempObjectArray.Length; index++)
  2254. byteArray[index] = (byte)tempObjectArray[index];
  2255. return byteArray;
  2256. }
  2257. #endregion
  2258. #region ToSByteArray.....
  2259. /// <summary>
  2260. /// 将此实例中的指定 <see cref="byte"/> 字符数组转换到 <see cref="sbyte"/> 字符数组。
  2261. /// </summary>
  2262. /// <param name="byteArray">要转换的 <see cref="byte"/> 字符数组</param>
  2263. /// <returns>返回转换后的 <see cref="sbyte"/> 字符数组</returns>
  2264. public static sbyte[] ToSByteArray(byte[] byteArray)
  2265. {
  2266. sbyte[] sbyteArray = new sbyte[byteArray.Length];
  2267. for (int index = 0; index < byteArray.Length; index++)
  2268. sbyteArray[index] = (sbyte)byteArray[index];
  2269. return sbyteArray;
  2270. }
  2271. #endregion
  2272. #region ReadInput.....
  2273. /// <summary>从流读取字节序列,并将此流中的位置提升读取的字节数.</summary>
  2274. /// <param name="sourceStream">要读取的流.</param>
  2275. /// <param name="target">字节数组。此方法返回时,该缓冲区包含指定的字符数组,该数组的 start 和 (start + count-1) 之间的值由从当前源中读取的字节替换。</param>
  2276. /// <param name="start">buffer 中的从零开始的字节偏移量,从此处开始存储从当前流中读取的数据。.</param>
  2277. /// <param name="count">要从当前流中最多读取的字节数。</param>
  2278. /// <returns>读入缓冲区中的总字节数。如果当前可用的字节数没有请求的字节数那么多,则总字节数可能小于请求的字节数,或者如果已到达流的末尾,则为零 (0)。</returns>
  2279. /// <exception cref="ArgumentException">start 与 count 的和大于缓冲区长度。</exception>
  2280. /// <exception cref="ArgumentNullException">target 为空引用(Visual Basic 中为 Nothing)。</exception>
  2281. /// <exception cref="ArgumentOutOfRangeException">offset 或 count 为负。</exception>
  2282. /// <exception cref="System.IO.IOException">发生 I/O 错误。</exception>
  2283. /// <exception cref="NotSupportedException">流不支持读取。</exception>
  2284. /// <exception cref="ObjectDisposedException">在流关闭后调用方法。</exception>
  2285. public static int ReadInput(System.IO.Stream sourceStream, ref sbyte[] target, int start, int count)
  2286. {
  2287. // Returns 0 bytes if not enough space in target
  2288. if (target.Length == 0)
  2289. return 0;
  2290. byte[] receiver = new byte[target.Length];
  2291. int bytesRead = sourceStream.Read(receiver, start, count);
  2292. // Returns -1 if EOF
  2293. if (bytesRead == 0)
  2294. return -1;
  2295. for (int i = start; i < start + bytesRead; i++)
  2296. target[i] = (sbyte)receiver[i];
  2297. return bytesRead;
  2298. }
  2299. /// <summary>从字符系列读取字节序列,并将此字符系列中的位置提升读取的字节数。</summary>
  2300. /// <param name="sourceTextReader">要读取的流。</param>
  2301. /// <param name="target">字节数组。此方法返回时,该缓冲区包含指定的字符数组,该数组的 start 和 (start + count-1) 之间的值由从当前源中读取的字节替换。</param>
  2302. /// <param name="start">buffer 中的从零开始的字节偏移量,从此处开始存储从当前流中读取的数据。.</param>
  2303. /// <param name="count">要从当前流中最多读取的字节数。</param>
  2304. /// <returns>读入缓冲区中的总字节数。如果当前可用的字节数没有请求的字节数那么多,则总字节数可能小于请求的字节数,或者如果已到达流的末尾,则为零 (0)。</returns>
  2305. /// <exception cref="ArgumentException">start 与 count 的和大于缓冲区长度。</exception>
  2306. /// <exception cref="ArgumentNullException">target 为空引用(Visual Basic 中为 Nothing)。</exception>
  2307. /// <exception cref="ArgumentOutOfRangeException">offset 或 count 为负。</exception>
  2308. /// <exception cref="System.IO.IOException">发生 I/O 错误。</exception>
  2309. /// <exception cref="NotSupportedException">流不支持读取。</exception>
  2310. /// <exception cref="ObjectDisposedException">在流关闭后调用方法。</exception>
  2311. public static int ReadInput(System.IO.TextReader sourceTextReader, ref sbyte[] target, int start, int count)
  2312. {
  2313. // Returns 0 bytes if not enough space in target
  2314. if (target.Length == 0)
  2315. return 0;
  2316. char[] charArray = new char[target.Length];
  2317. int bytesRead = sourceTextReader.Read(charArray, start, count);
  2318. // Returns -1 if EOF
  2319. if (bytesRead == 0)
  2320. return -1;
  2321. for (int index = start; index < start + bytesRead; index++)
  2322. target[index] = (sbyte)charArray[index];
  2323. return bytesRead;
  2324. }
  2325. #endregion
  2326. #region FileLength.....
  2327. /// <summary>
  2328. /// 检测当前文件的大小
  2329. /// </summary>
  2330. /// <param name="file">被检测的文件</param>
  2331. /// <returns>当前文件的大小。</returns>
  2332. public static long FileLength(System.IO.FileInfo file)
  2333. {
  2334. if (System.IO.Directory.Exists(file.FullName))
  2335. return 0;
  2336. else
  2337. return file.Length;
  2338. }
  2339. #endregion
  2340. #region Identity.....
  2341. /// <summary>
  2342. /// This method returns the literal value received
  2343. /// </summary>
  2344. /// <param name="literal">The literal to return</param>
  2345. /// <returns>The received value</returns>
  2346. public static long Identity(long literal)
  2347. {
  2348. return literal;
  2349. }
  2350. /// <summary>
  2351. /// This method returns the literal value received
  2352. /// </summary>
  2353. /// <param name="literal">The literal to return</param>
  2354. /// <returns>The received value</returns>
  2355. public static ulong Identity(ulong literal)
  2356. {
  2357. return literal;
  2358. }
  2359. /// <summary>
  2360. /// This method returns the literal value received
  2361. /// </summary>
  2362. /// <param name="literal">The literal to return</param>
  2363. /// <returns>The received value</returns>
  2364. public static float Identity(float literal)
  2365. {
  2366. return literal;
  2367. }
  2368. /// <summary>
  2369. /// This method returns the literal value received
  2370. /// </summary>
  2371. /// <param name="literal">The literal to return</param>
  2372. /// <returns>The received value</returns>
  2373. public static double Identity(double literal)
  2374. {
  2375. return literal;
  2376. }
  2377. #endregion
  2378. #endregion
  2379. }
  2380. #endregion
  2381. }