当前位置: 首页 > 编程语言 > C#

C#中的西里尔文编码分享

时间:2023-04-11 02:19:44 C#

C#中的西里尔文编码我在MSSQL数据库中有一堆类似西里尔文的文本,需要在C#中转换为西里尔文。所以...Dàá?òàa?eìàíèè应该变成Работавгермании有什么建议吗?我应该补充一下,我最接近的?啊啊啊?iaiee这是我正在使用的代码:str=Encoding.UTF8.GetString(Encoding.GetEncoding("Windows-1251").GetBytes(drCurrent["myfield"].ToString()));str=Encoding.GetEncoding(1251).GetString(Encoding.Convert(Encoding.UTF8,Encoding.GetEncoding(1251),Encoding.UTF8.GetBytes(str)));//找出源和目标conststringsource="Dàá?òà??eìàíèè";conststringdestination="Работавгермании";foreach(varsourceEncodinginEncoding.GetEncodings()){varbytes=sourceEncoding.GetEncoding().GetBytes(source);foreach(vartargetEncodinginEncoding.GetEncodings()){if(targetEncoding.GetEncoding().GetString(bytes)==destination){Console.WriteLine("SourceEncoding:{0}TargetEncoding:{1}",sourceEncoding.CodePage,targetEncoding.CodePage);}}}//Result1:SourceEncoding:1252TargetEncoding:1251//Result2:SourceEncoding:28591TargetEncoding:1251//Result3:SourceEncoding:28605TargetEncoding:1251//你使用的代码vardecodedCyrillic=Encoding.GetEncoding(1251).GetString(Encoding.GetEncoding(1252).GetBytes(source));//结果:РаботавгерманииADO.Net将来自SQLServer提供程序的所有字符串类型公开为C#字符串,这意味着它们已转换为Unicode对于非unicode源列(如您所见),如char(n)或varchar(n),ADO.NetSQLServer提供程序使用源排序规则信息来确定编码。因此,如果您的非unicodeSQLServer数据在.Net中以错误的编码表示,则必须使用错误的排序规则将其呈现给提供程序。为您的数据选择适当的排序规则,SQLServer的ADO.Net提供程序将使用适当的编码对其进行转换。例如,如排序规则和代码页体系结构中所述,西里尔排序将导致代码页1251,这很可能是您想要的。链接的文章包含解决问题所需的所有信息。使用系统;使用系统文本;使用System.Data.SqlClient;使用System.Windows.Forms;publicclassHello1{publicstaticvoidMain(){try{using(SqlConnectionconn=newSqlConnection("server=.;integratedsecurity=true")){conn.Open();//.cs文件必须保存为Unicode,显然...//strings="Работавгермании";byte[]b=Encoding.GetEncoding(1251).GetBytes(s);//创建一个测试表//SqlCommandcmd=newSqlCommand(@"createtable#t(c1varchar(100)collat??eLatin1_General_CI_AS,c2varchar(100)collat??eCyrillic_General_CI_AS)",conn);cmd.ExecuteNonQuery();//两次插入相同的值,原始Unicode字符串//编码为CP1251//cmd=newSqlCommand(@"insertinto#t(c1,c2)values(@b,@b)",conn);cmd.Parameters.AddWithValue("@b",b);cmd.ExecuteNonQuery();//以拉丁排序规则读取值//cmd=newSqlCommand(@"selectc1from#t",conn);字符串def=(字符串)cmd.ExecuteScalar();//读与西里尔排序规则相同的值//cmd=newSqlCommand(@"selectc2from#t",conn);字符串cyr=(字符串)cmd.ExecuteScalar();//不能使用Console.Write,因为控制台不是Unicode//MessageBox.Show(String.Format(@"Original:{0}Defaultcollat??ion:{1}Cyrilliccollat??ion:{2}",s,def,cyr));}}catch(Exceptione){Console.WriteLine(e);}}}结果为:以上就是C#学习教程:CyrilliccodinginC#的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——--------------------------------------------------原文:Работавгермании默认排序规则:Dàá?òà??eìàíèè西里尔字母排序规则:Работавгермании---------------好的-------------——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: