C# – 比较不同编码的字符串
使用C#,我从.ascx页面获取TextBox.Text
值。 当我将值的相等性与LINQ查询中的常规字符串对象进行比较时,它总是返回false。
我得出的结论是,它们的编码方式不同,但到目前为止还没有转换或比较它们的运气。
docname = "Testdoc 1.docx"; //regular string created in C# fetchedVal = ((TextBox)e.Item.FindControl("txtSelectedDocs")).Text; //UTF-8
当表示为文字时,上述两个字符串是相同的,但是比较byte[]
,由于编码,它们明显不同。
我尝试了很多不同的东西,比如:
System.Text.Encoding.Default.GetString(utf8.GetBytes(fetchedVal));
但这将返回值"Testdoc 1.docx"
。
如果我反而尝试
System.Text.Encoding.Default.GetString(System.Text.Encoding.Default.GetBytes(fetchedVal));
它返回"Testdoc 1.docx"
但是Equals()
check仍然返回false
。
我也试过以下,这似乎是推荐的方法,但没有运气:
byte[] utf8Bytes = Encoding.UTF8.GetBytes(fetchedVal); byte[] unicodeBytes = Encoding.Convert(Encoding.UTF8, Encoding.Unicode, utf8Bytes); string fetchedValConverted = Encoding.Unicode.GetString(unicodeBytes);
罪魁祸首似乎是空白,因为在检查字节序列时,它始终是不同的第七个字节。
你如何正确地从UTF-8转换为C#中的默认字符串编码?
字符串没有编码或字节数组。 编码只有在将字符串转换为字节数组时才会发挥作用; 你只能通过指定用于选择字节的编码来实现。
听起来你实际上只是在你的字符串中有不同的字符。 您可能在其中一个中有一个不可见的字符,或者它们可能具有看起来相同的不同字符。
要找到答案,请查看每个字符串中每个字符的Unicode代码点值(例如, (int) str[0]
)。
上述就是C#学习教程:C# – 比较不同编码的字符串分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1014366.html