杨的空间
业精于勤,荒于嬉,行成于思,毁于随

简繁体转换

[ 2005-07-15 23:49:19 | 作者: yuhen ]
字号: | |
Strings.StrConv 这个方法还是博客园的一个兄弟发现的,我添了几行代码。做个记录,免得以后忘记。
我的分词组件可以利用这个临时解决一下繁体分词了。 [smile]

添加 Microsoft Visual Basic.NET Runtime 引用。
using System;
using System.IO;
using System.Text;
using Microsoft.VisualBasic;

namespace Rainsoft.Text
{
  /// <summary>
  /// 字符串编码转换类
  /// </summary>
  public class StringEncoding
  {
    private StringEncoding()
    {
    }

    /// <summary>
    /// 将字符串转换为简体中文
    /// </summary>
    public static string ToSimplifiedChinese(string s)
    {
      return Microsoft.VisualBasic.Strings.StrConv(s, VbStrConv.SimplifiedChinese, 0);
    }

    /// <summary>
    /// 将文件转换为简体中文
    /// </summary>
    /// <param name="filename">源文件名</param>
    /// <param name="encoding">源文件字符编码</param>
    /// <param name="outFilename">目标文件名</param>
    /// <param name="outEncoding">目标文件字符编码</param>
    /// <example>
    /// <code>
    /// ToSimplifiedChinese("big5.txt", Encoding.GetEncoding("big5"), "gb.txt", Encoding.GetEncoding("gb2312"));
    /// ToSimplifiedChinese("big5.txt", Encoding.GetEncoding("big5"), "gb.txt", Encoding.UTF8);
    /// </code>
    /// </example>
    public static void ToSimplifiedChinese(string filename, Encoding encoding, string outFilename, Encoding outEncoding)
    {
      StreamReader r = new StreamReader(filename, encoding);
      StreamWriter w = new StreamWriter(outFilename, false, outEncoding);
      try
      {
        w.Write(Strings.StrConv(r.ReadToEnd(), VbStrConv.SimplifiedChinese, 0));
        w.Flush();
      }
      finally
      {
        w.Close();
        r.Close();
      }
    }

    /// <summary>
    /// 将字符串转换为繁体中文
    /// </summary>
    public static string ToTraditionalChinese(string s)
    {
      return Microsoft.VisualBasic.Strings.StrConv(s, VbStrConv.TraditionalChinese, 0);
    }

    /// <summary>
    /// 将文件转换为繁体中文
    /// </summary>
    /// <param name="filename">源文件名</param>
    /// <param name="encoding">源文件字符编码</param>
    /// <param name="outFilename">目标文件名</param>
    /// <param name="outEncoding">目标文件字符编码</param>
    /// <example>
    /// <code>
    /// ToTraditionalChinese("gb.txt", Encoding.GetEncoding("gb2312"), "gb.txt", Encoding.GetEncoding("big5"));
    /// ToTraditionalChinese("gb.txt", Encoding.GetEncoding("gb2312"), "gb.txt", Encoding.UTF8);
    /// </code>
    /// </example>
    public static void ToTraditionalChinese(string filename, Encoding encoding, string outFilename, Encoding outEncoding)
    {
      StreamReader r = new StreamReader(filename, encoding);
      StreamWriter w = new StreamWriter(outFilename, false, outEncoding);
      try
      {
        w.Write(Strings.StrConv(r.ReadToEnd(), VbStrConv.TraditionalChinese, 0));
        w.Flush();
      }
      finally
      {
        w.Close();
        r.Close();
      }
    }
  }
}
posted on 2007-01-20 09:44 阅读(4621) 评论(5)  编辑 收藏 引用 所属分类: 技术类
Comments
  • # re: C# 简繁体转换
    商业计划书
    Posted @ 2007-01-26 23:25

    博主写的很好  回复  更多评论   
  • # re: C# 简繁体转换
    不在
    Posted @ 2007-04-05 14:07
    也许  回复  更多评论   
  • # re: C# 简繁体转换[未登录]
    zhang
    Posted @ 2007-04-28 14:31
    一切都在悄悄的改变,“他”原来早以“不在”,是我一直以为他会“回来”他不在了,从此我要从他身边消失~~  回复  更多评论   
  • # re: C# 简繁体转换[未登录]
    蜗牛
    Posted @ 2007-08-21 19:33
    文件流输出读到文本,
    在richTextBox1输出的是乱码,怎么样转换  回复  更多评论   
  • # re: C# 简繁体转换
    繁体字
    Posted @ 2008-12-28 22:07
    乱码  回复  更多评论   
只有注册用户登录后才能发表评论。