开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 5750|回复: 1

[源码] C#使用LCMapString API函数进行中文简繁体互相转换

[复制链接]

0

精华

633

贡献

560

赞扬

正版授权组

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
171
软币
3596
在线时间
375 小时
注册时间
2013-7-5
发表于 2013-7-10 12:39:50 | 显示全部楼层 |阅读模式
C# Code:

/// <summary>
/// C#使用LCMapString API函数进行中文简繁体互相转换
/// </summary>
public static class ChineseConverter
{
   internal const int LOCALE_SYSTEM_DEFAULT = 0x0800;
   internal const int LCMAP_SIMPLIFIED_CHINESE = 0x02000000;
   internal const int LCMAP_TRADITIONAL_CHINESE = 0x04000000;
   
   /// <summary>
   /// 使用OS的kernel.dll做為簡繁轉換工具,只要有裝OS就可以使用,不用額外引用dll,但只能做逐字轉換,無法進行詞意的轉換
   /// <para>所以無法將電腦轉成計算機</para>
   /// </summary>
   [DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true)]
   internal static extern int LCMapString(int Locale, int dwMapFlags, string lpSrcStr, int cchSrc, [Out]string lpDestStr, int cchDest);
   
   /// <summary>
   /// 繁體轉簡體
   /// </summary>
   /// <param name="pSource">要轉換的繁體字:體</param>
   /// <returns>轉換後的簡體字:体</returns>
   public static string ToSimplified(string pSource)
   {
      String tTarget = new String(' ', pSource.Length);
      int tReturn = LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_SIMPLIFIED_CHINESE, pSource, pSource.Length, tTarget, pSource.Length);
      return tTarget;
   }
   
   /// <summary>
   /// 簡體轉繁體
   /// </summary>
   /// <param name="pSource">要轉換的繁體字:体</param>
   /// <returns>轉換後的簡體字:體</returns>
   public static string ToTraditional(string pSource)
   {
      String tTarget = new String(' ', pSource.Length);
      int tReturn = LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_TRADITIONAL_CHINESE, pSource, pSource.Length, tTarget, pSource.Length);
      return tTarget;
   }

评分

参与人数 1贡献 +3 赞扬 +1 收起 理由
羽叶 + 3 + 1

查看全部评分

回复

使用道具 举报

0

精华

5097

贡献

5311

赞扬

管理员

帖子
1154
软币
21035
在线时间
4325 小时
注册时间
2013-6-7

黄马甲

发表于 2013-7-10 13:29:00 | 显示全部楼层
这方法不错,有空试试
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-5-3 20:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表