我最近要开发一个web项目,需要提供简体中文和繁体中文的支持,用户通过web页面录入数据到数据库中的时候,可以将其录入的简体(或繁体)内容转化为繁体(或简体)也保存到数据库中,该如何实现简体和繁体的互相转换。
我打算做两套页面,对于繁体页面我想通过字体转换使之成为简体的,然后存入数据库中。
上网查了一下有那种繁简转换的页面,不过效果不是很理想。考虑到繁体页面的效率问题,这种方法可能会比较慢。谁有好的办法呀?给提示一下呀。如果有具体的源码就更好了……
我打算做两套页面,对于繁体页面我想通过字体转换使之成为简体的,然后存入数据库中。
上网查了一下有那种繁简转换的页面,不过效果不是很理想。考虑到繁体页面的效率问题,这种方法可能会比较慢。谁有好的办法呀?给提示一下呀。如果有具体的源码就更好了……
http://www.cnblogs.com/hotsoho.net/archive/2005/01/03/85978.aspx
基于ASP.NET实现全球化
http://www.cnblogs.com/tonyjoule/archive/2005/04/20/9504.html
/// 简体转为繁体。
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string SimplifiedToTraditional(string str)
{
return Microsoft.VisualBasic.Strings.StrConv(str, Microsoft.VisualBasic.VbStrConv.TraditionalChinese, 0);
} /// <summary>
/// 繁体转为简体。
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string TraditionalToSimplified(string str)
{
return Microsoft.VisualBasic.Strings.StrConv(str, Microsoft.VisualBasic.VbStrConv.SimplifiedChinese, 0);
}添加引用:Microsoft.VisualBasic.dll
using System;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Web;
namespace DreamZone.Core
{
/// <summary>
/// CG2BFilter 的摘要说明。
/// </summary>
public class CG2BFilter : Stream
{
Stream responseStream;
long position;
StringBuilder responseHtml; public CG2BFilter (Stream inputStream)
{
responseStream = inputStream;
responseHtml = new StringBuilder ();
} #region Filter overrides
public override bool CanRead
{
get { return true;}
} public override bool CanSeek
{
get { return true; }
} public override bool CanWrite
{
get { return true; }
} public override void Close()
{
responseStream.Close ();
} public override void Flush()
{
responseStream.Flush ();
} public override long Length
{
get { return 0; }
} public override long Position
{
get { return position; }
set { position = value; }
} public override long Seek(long offset, SeekOrigin origin)
{
return responseStream.Seek (offset, origin);
} public override void SetLength(long length)
{
responseStream.SetLength (length);
} public override int Read(byte[] buffer, int offset, int count)
{
return responseStream.Read (buffer, offset, count);
}
#endregion #region 转换任务
public override void Write(byte[] buffer, int offset, int count)
{
string strBuffer = System.Text.UTF8Encoding.UTF8.GetString (buffer, offset, count);
string finalHtml = Simplified2Traditional(strBuffer);
byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes (finalHtml);
responseStream.Write (data, 0, data.Length);
} #endregion
#region 自定义函数
public string Traditional2Simplified( string str)
{ //繁体转简体
return(Microsoft.VisualBasic.Strings.StrConv(str, Microsoft.VisualBasic.VbStrConv.SimplifiedChinese,0));
}
public string Simplified2Traditional( string str)
{ //简体转繁体
return(Microsoft.VisualBasic.Strings.StrConv(str as String, Microsoft.VisualBasic.VbStrConv.TraditionalChinese,0));
}
#endregion
}
}
调用只要一行代码:
Response.Filter = new DreamZone.Core.CG2BFilter(Response.Filter);//设置筛选器
挖哈哈哈哈!~~解决了我一个心头大患,而且执行时间非常短,应用繁体和不加繁体执行时间本机执行都是2毫秒多,叶面有137K数据,采用缓存读了10个数据库表内容!