C# – 比较不同编码的字符串
发布时间:2020-12-15 08:45:42 所属栏目:百科 来源:网络整理
导读:使用C#,我从.ascx页面获取TextBox.Text值.当我将值的相等性与LINQ查询中的常规字符串对象进行比较时,它总是返回false. 我得出的结论是,它们的编码方式不同,但到目前为止还没有转换或比较它们的运气. docname = "Testdoc 1.docx"; //regular string created i
使用C#,我从.ascx页面获取TextBox.Text值.当我将值的相等性与LINQ查询中的常规字符串对象进行比较时,它总是返回false.
我得出的结论是,它们的编码方式不同,但到目前为止还没有转换或比较它们的运气. docname = "Testdoc 1.docx"; //regular string created in C# fetchedVal = ((TextBox)e.Item.FindControl("txtSelectedDocs")).Text; //UTF-8 当表示为文字时,上述两个字符串是相同的,但是比较字节[],由于编码,它们明显不同. 我尝试了很多不同的东西,比如: 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() – 检查仍然返回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# – ORA-06550:第1行第7列:PLS-00306:参数的数量或类型
- Cocos2dx学习笔记4:导演(Director)
- c# – 如何在visual studio web安装程序中添加自述文件?
- 【Oracle】再看事务
- stm32 keil MDK在线调试报错 Error: Flash download failed
- 中国天气网 天气预报API 国家气象局 根据城市名称抓取城市I
- SpringMVC+Ajax+拼接html字符串实例代码
- 使用Swift禁用MPMoviePlayerController的音频(和中断)
- 选择最适合用于变量的整数大小/范围
- .net – 使用XML序列化时有没有办法避免自动关闭标记?