C#使用LCMapString API函数进行中文简繁体互相转换
C#使用LCMapString API函数进行中文简繁体互相转换
本文英文版:http://ceeji.net/en/blog/2010/03/c-convert-between-simplified-chinese-and-traditional-chinese/
本文来源:
简体中文 (Simplified Chinese)和繁体中文(传统汉字,Traditional Chinese)之间的转换,单纯使用字字对照转换是绝对无法准确的。所以,在使用下面的方法进行了 C# 简繁转换后,务必对转换结果进行修正,才能保证可以使用。
修正主要包括:
1、一对多关系时根据词义换用字;
2、两岸(或港台和内地)词汇差异,如“网上邻居”和“网络上的芳邻”、“最终用户许可协议”和“最终用户许可协议”。
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;
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
/// <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;
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
本文英文版:http://ceeji.net/en/blog/2010/03/c-convert-between-simplified-chinese-and-traditional-chinese/
本文来源:
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网