[求助]将一段C++"用API作简繁体转换"代码转换成C#代码 用API不好把。用.net的函数不是更方便么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以下引用自(polarlm(今年本命年)的回复)微软提供的这个功能在Microsoft.VisualBasic.Strings.StrConv中,十分容易地就可以调用它,下面是一个简单的将简体转为繁体的例子:using Microsoft.VisualBasic;……string source = “中国是一个美丽的国家。”;string target = Strings.StrConv(source, VbStrConv.TraditionalChinese, 0);然后我们就得到了内容为:“中國是一個美麗的國家。”的字符串target。如果想将繁体转为简体,只需要将第2个参数改为VBStrConv.SimplifiedChinese就可以了。当然这个调用简单的函数还有其他强大的功能,比如提供日文平假名和片假名的转换等。我建议读者一定要抽时间读一下MSDN中关于此功能的介绍。ms-help://MS.MSDNQTR.2003FEB.2052/vblr7/html/vafctstrconv.htm 我这是使用以上说的VB.Net中的这个功能,这个我在简休Win2000中是可以转换过来,且可以看到,我将编译好的程序,放到繁体Win98中就转换不过来,不知道为什么? 我写的一个简体转繁体的类:using System;using System.Data;namespace VirunConvertor{ /// <summary> /// 将简体中文转化为繁体中文。 /// </summary> public class ConvS2T { static public string TraditionalChinese(string SimplifiedChinese) { return Microsoft.VisualBasic.Strings.StrConv(SimplifiedChinese,Microsoft.VisualBasic.VbStrConv.TraditionalChinese,0); } static public string TraditionalChinese(string SimplifiedChinese,bool ConvertWords) { string sSimplified=null; if(ConvertWords) { sSimplified=WordsConvert(SimplifiedChinese); } else { sSimplified=SimplifiedChinese; } return Microsoft.VisualBasic.Strings.StrConv(sSimplified,Microsoft.VisualBasic.VbStrConv.TraditionalChinese,0); } static public string Big5Chinese(string Gb2312Chinese) { string sTraditional=TraditionalChinese(Gb2312Chinese); byte[] bytes = System.Text.Encoding.GetEncoding("big5").GetBytes(sTraditional); return System.Text.Encoding.GetEncoding("gb2312").GetString(bytes); } static public string Big5Chinese(string Gb2312Chinese,bool ConvertWords) { string sTraditional=TraditionalChinese(Gb2312Chinese,ConvertWords); byte[] bytes = System.Text.Encoding.GetEncoding("big5").GetBytes(sTraditional); return System.Text.Encoding.GetEncoding("gb2312").GetString(bytes); } static protected string WordsConvert(string Text) { DataSet ds=new DataSet(); ds.ReadXml("WordsTable.xml"); foreach(DataRow row in ds.Tables[0].Rows) { Text=Text.Replace(row[0].ToString(),row[1].ToString()); } return Text; } }} 我遇到和你一样的问题,不过我是在读.txt文件时遇到的,还是用VB的StrConv函数,不过读进来时根据.txt的格式采用不同的编码//Encoding.GetEncoding(950) 即繁体中文BIG5,//Encoding.GetEncoding(936) 即间体中文GBK。private Encoding getEncoding(){ switch(this.encodingStyle) { case "0" : return this.textDeal == "0" ? Encoding.GetEncoding(950) : Encoding.GetEncoding(936); case "1" : return Encoding.Unicode; case "2" : return Encoding.UTF8; case "3" : return Encoding.BigEndianUnicode; default : break; } return Encoding.GetEncoding(936);}希望对你又帮助 to:popcorn(米花) ,在繁体Win98下还是不行 http://www.codeproject.com/useritems/Chinese_Style_Converter.asp 小菜鸟求救 Enterprise企业库如何接收存储过程的输出参数 DatagridView 小数点位数控制? 多态问题 C#读数据问题 关于防止非法拷贝Web程序的策略 c#保存word的问题 【求助】关于“覆盖Object.Equals()”和“隐式类型转换”的问题,谢谢! c# 中使用word控件,将表格和带格式的文本导成word文档出现的问题!熟悉word控件的请进! 装好了.net framework sdk以后,编好了一个.cs的文件以后,怎样对这个文件进行编译 XP安装了vs .net2003 及MSDN 但运行帮助文件刚开始还可以,一会儿出现非法错误现象 一次定义多个菜单
微软提供的这个功能在Microsoft.VisualBasic.Strings.StrConv中,十分容易地就可以调用它,下面是一个简单的将简体转为繁体的例子:
using Microsoft.VisualBasic;
……
string source = “中国是一个美丽的国家。”;
string target = Strings.StrConv(source, VbStrConv.TraditionalChinese, 0);
然后我们就得到了内容为:“中國是一個美麗的國家。”的字符串target。如果想将繁体转为简体,只需要将第2个参数改为VBStrConv.SimplifiedChinese就可以了。
当然这个调用简单的函数还有其他强大的功能,比如提供日文平假名和片假名的转换等。我建议读者一定要抽时间读一下MSDN中关于此功能的介绍。ms-help://MS.MSDNQTR.2003FEB.2052/vblr7/html/vafctstrconv.htm
using System.Data;namespace VirunConvertor
{
/// <summary>
/// 将简体中文转化为繁体中文。
/// </summary>
public class ConvS2T
{ static public string TraditionalChinese(string SimplifiedChinese)
{
return Microsoft.VisualBasic.Strings.StrConv(SimplifiedChinese,Microsoft.VisualBasic.VbStrConv.TraditionalChinese,0);
} static public string TraditionalChinese(string SimplifiedChinese,bool ConvertWords)
{
string sSimplified=null;
if(ConvertWords)
{
sSimplified=WordsConvert(SimplifiedChinese);
}
else
{
sSimplified=SimplifiedChinese;
}
return Microsoft.VisualBasic.Strings.StrConv(sSimplified,Microsoft.VisualBasic.VbStrConv.TraditionalChinese,0);
} static public string Big5Chinese(string Gb2312Chinese)
{
string sTraditional=TraditionalChinese(Gb2312Chinese);
byte[] bytes = System.Text.Encoding.GetEncoding("big5").GetBytes(sTraditional);
return System.Text.Encoding.GetEncoding("gb2312").GetString(bytes);
} static public string Big5Chinese(string Gb2312Chinese,bool ConvertWords)
{
string sTraditional=TraditionalChinese(Gb2312Chinese,ConvertWords);
byte[] bytes = System.Text.Encoding.GetEncoding("big5").GetBytes(sTraditional);
return System.Text.Encoding.GetEncoding("gb2312").GetString(bytes);
} static protected string WordsConvert(string Text)
{
DataSet ds=new DataSet();
ds.ReadXml("WordsTable.xml");
foreach(DataRow row in ds.Tables[0].Rows)
{
Text=Text.Replace(row[0].ToString(),row[1].ToString());
}
return Text;
}
}
}
//Encoding.GetEncoding(950) 即繁体中文BIG5,
//Encoding.GetEncoding(936) 即间体中文GBK。
private Encoding getEncoding()
{
switch(this.encodingStyle)
{
case "0" : return this.textDeal == "0" ? Encoding.GetEncoding(950) : Encoding.GetEncoding(936);
case "1" : return Encoding.Unicode;
case "2" : return Encoding.UTF8;
case "3" : return Encoding.BigEndianUnicode;
default : break;
}
return Encoding.GetEncoding(936);
}希望对你又帮助