使用微軟的多語言工具包進行網站簡體與繁體的互轉和得到漢字、拼音、筆畫等相關資訊

孟子E章發表於2009-04-20

 

2009年3月31日,微軟釋出了 Microsoft Visual Studio International Pack 1.0 SR1。Visual Studio International Pack 包含一組類庫,該類庫擴充套件了.NET Framework對全球化軟體開發的支援。使用該類庫提供的類,.NET 開發人員可以更方便的建立支援多文化多語言的軟體應用。下載地址是:http://www.microsoft.com/downloads/details.aspx?FamilyID=44cac7f0-633b-477d-aed2-99aee642fc10&DisplayLang=zh-cn  該軟體包1.0版提供下面七個元件以增強.NET Framework對全球化軟體應用開發的支援。

  1. East Asia Numeric Formatting Library - 支援將小寫的數字字串格式化成簡體中文,繁體中文,日文和韓文的大寫數字字串。
  2. Japanese Kana Conversion Library - 支援將日文假名(Kana)轉化為另一種日文字元。
  3. Japanese Text Alignment Library - 支援日文特有的一種對齊格式。
  4. Japanese Yomi Auto-Completion Library - 類庫支援感知日文輸入法的輸入自動完成和一個文字框控制元件的示例。
  5. Korean Auto Complete TextBox Control - 支援韓文輸入法的智慧感知和輸入自動完成的文字框控制元件。
  6. Simplified Chinese Pin-Yin Conversion Library - 支援獲取簡體中文字元的常用屬性比如拼音,多音字,同音字,筆畫數。
  7. Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool - 支援簡繁體中文之間的轉換。該元件還包含一個Visual Studio整合開發環境中的外掛(Add-in)支援簡繁體中文資原始檔之間的轉換。

 

下載完畢後,進行解壓,裡面有7個msi檔案,其中:CHSPinYinConv.msi就是漢字拼音相關的,CHTCHSConv.msi是進行簡體與繁體進行相互轉換的,值安裝這2個msi即可。安裝完畢後,需要在VS裡新增引用,分別引用:C:\Program Files\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library下和C:\Program Files\Microsoft Visual Studio International Pack\Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool下的dll即可使用。下面是一個漢字“孟”的測試例子:

 

C# 程式碼
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtusing System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.International.Converters.PinYinConverter;
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
using System.Collections.ObjectModel;


public partial class Default2 : System.Web.UI.Page
{

  
protected void Page_Load(object sender, EventArgs e)
  {
    ChineseChar chineseChar
= new ChineseChar('');
    Response.Write(
"

關於漢字 “孟” 的相關資訊:

");
    Response.Write(
"
  • “孟”筆畫數:
  • " + ChineseChar.GetStrokeNumber(''));
        Response.Write(
    "
  • “孟”是否是多音字:
  • " + chineseChar.IsPolyphone);
        ReadOnlyCollection
    <string> pinyin = chineseChar.Pinyins;
        Response.Write(
    "
  • “孟”所有拼音:
  • ");
        
    foreach (string pin in pinyin)
        {
          Response.Write(pin
    + ",");
        }

        
    char[] ChineseChars;

        Response.Write(
    "
  • 所有拼音 MENG1 的漢字
  • ");
        ChineseChars
    = ChineseChar.GetChars("MENG1");
        Response.Write(
    "" + ChineseChars.Length.ToString() + "個,分別是:");
        
    for (int i = 0; i < ChineseChars.Length; i++)
        {
          Response.Write(ChineseChars[i]
    + ",");
        }

        Response.Write(
    "
  • 所有拼音 MENG2 的漢字
  • ");

        ChineseChars
    = ChineseChar.GetChars("MENG2");
        Response.Write(
    "" + ChineseChars.Length.ToString() + "個,分別是:");
        
    for (int i = 0; i < ChineseChars.Length; i++)
        {
          Response.Write(ChineseChars[i]);
        }

        Response.Write(
    "
  • 所有拼音 MENG3 的漢字
  • ");
        ChineseChars
    = ChineseChar.GetChars("MENG3");
        Response.Write(
    "" + ChineseChars.Length.ToString() + "個,分別是:");
        
    for (int i = 0; i < ChineseChars.Length; i++)
        {
          Response.Write(ChineseChars[i]);
        }
        Response.Write(
    "
  • 所有拼音 MENG2 的漢字
  • ");
        ChineseChars
    = ChineseChar.GetChars("MENG4");
        Response.Write(
    "" + ChineseChars.Length.ToString() + "個,分別是:");
        
    for (int i = 0; i < ChineseChars.Length; i++)
        {
          Response.Write(ChineseChars[i]);
        }
        Response.Write(
    "
  • 所有拼音 MENG5 的漢字
  • ");
        ChineseChars
    = ChineseChar.GetChars("MENG5");
        Response.Write(
    "" + ChineseChars.Length.ToString() + "個,分別是:");
        
    for (int i = 0; i < ChineseChars.Length; i++)
        {
          Response.Write(ChineseChars[i]);
        }

        String simText
    = "歡迎光臨【孟子E章】";
        String traText
    = ChineseConverter.Convert(simText, ChineseConversionDirection.SimplifiedToTraditional);
        Response.Write(
    "
  • 繁簡轉換測試:
  • " + traText);
      }
    }

     

    得到的結果是:

    關於漢字 “孟” 的相關資訊:

    • “孟”筆畫數:8
    • “孟”是否是多音字: True
    • “孟”所有拼音:MENG4,MENG5,,,,,,,
    • 所有拼音 MENG1 的漢字
      共4個,分別是:擝,濛,矇,蒙,
    • 所有拼音 MENG2 的漢字
      共45個,分別是:儚冡夣嫇尨幪庬懜懞掹曚朦橗檬氋氓溕濛獴甍甿盟瞢矇矒礞艨莔萌蒙蕄虻蝱鄳鄸雺霚霿靀顭饛鯍鸏鸏鼆
    • 所有拼音 MENG3 的漢字
      共16個,分別是:勐幪懜懵猛瓾矇艋蒙蜢蠓錳錳鯭黽鼆
    • 所有拼音 MENG2 的漢字
      共6個,分別是:夢夣孟懜夢霥
    • 所有拼音 MENG5 的漢字
      共61個,分別是:儚冡勐夢夣嫇孟尨幪庬懜懞懵掹擝曚朦夢橗檬氋氓溕濛猛獴瓾甍甿盟瞢矇矒礞艋艨莔萌蒙蕄虻蜢蝱蠓鄳鄸錳錳雺霚霥霿靀顭饛鯍鯭鸏鸏黽鼆
    • 繁簡轉換測試:歡迎光臨【孟子E章】

     

     不過:有幾個方面主要注意:

    1. 不清楚這個工具參照的是哪個漢字標準,SDK上也沒有看到說明,“孟”這個字在字典中並不是多音字;
    2. 拼音後面的1,2,3,4,5猜測應當是聲調標記:陰平,陽平,上聲,去聲,輕聲。具體是否是有待查證;

    中文簡體與中文繁體之間的轉換比較簡單,下面就是一個將簡體轉換成繁體的程式碼:

     

    C# 程式碼
    <!--

    Code highlighting produced by Actipro CodeHighlighter (freeware)
    http://www.CodeHighlighter.com/

    --&gtString simText = "歡迎光臨【孟子E章】";
    String traText
    = ChineseConverter.Convert(simText, ChineseConversionDirection.SimplifiedToTraditional);
    Response.Write(
    "
  • 繁簡轉換測試:
  • " + traText);

     

    下面是Microsoft.International.Converters.PinYinConverter.ChineseChar類的成員:

    封裝了簡體中文的讀音和筆畫等基本資訊。

    成員型別 成員 描述
      ChineseCharNew(Char)
    ChineseChar類的建構函式。
      ChineseCharacter
    獲取這個漢字字元。
      CompareStrokeNumber(Char)
    將給出的字元和例項字元的筆畫數進行比較。
    靜態成員 GetCharCount(Int16)
    檢索具有指定筆畫數的字元個數。
    靜態成員 GetChars(String)
    獲取給定拼音的所有同音字。
    靜態成員 GetChars(Int16)
    檢索具有指定筆畫數的所有字串。
    靜態成員 GetHomophoneCount(String)
    檢索具有指定拼音的字元數。
    靜態成員 GetStrokeNumber(Char)
    檢索指定字元的筆畫數。
      HasSound(String)
    識別字元是否有指定的讀音。
      IsHomophone(Char)
    識別給出的字元是否是例項字元的同音字。
    靜態成員 IsHomophone(Char, Char)
    識別給出的兩個字元是否是同音字。
      IsPolyphone
    獲取這個字元是否是多音字。
    靜態成員 IsValidChar(Char)
    識別給出的字串是否是一個有效的漢字字元。
    靜態成員 IsValidPinyin(String)
    識別給出的拼音是否是一個有效的拼音字串。
    靜態成員 IsValidStrokeNumber(Int16)
    識別給出的筆畫數是否是一個有效的筆畫數。
      PinyinCount
    獲取這個字元的拼音個數。
      Pinyins
    獲取這個字元的拼音。
      StrokeNumber
    獲取這個字元的筆畫數。
     

    其他資訊請參與隨機安裝的chm幫助檔案。

    來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15723462/viewspace-591074/,如需轉載,請註明出處,否則將追究法律責任。

    相關文章