相关疑难解决方法(0)

如何在不手动指定编码的情况下在C#中获得字符串的一致字节表示?

我如何转换stringbyte[]在.NET(C#),而无需手动指定一个特定的编码?

我要加密字符串.我可以在不转换的情况下加密它,但我仍然想知道为什么编码在这里发挥作用.

另外,为什么要考虑编码?我不能简单地得到字符串存储的字节数吗?为什么依赖于字符编码?

.net c# string character-encoding

2121
推荐指数
22
解决办法
114万
查看次数

如何在字符串比较中忽略UTF-8字节顺序标记?

我在使用Visual Studio 2010比较C#4.0中的单元测试中的字符串时遇到问题.同样的测试用例在Visual Studio 2008中正常工作(使用C#3.5).

这是相关的代码段:

byte[] rawData = GetData();
string data = Encoding.UTF8.GetString(rawData);

Assert.AreEqual("Constant", data, false, CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)

在调试此测试时,该data字符串在肉眼看来包含与文字完全相同的字符串.当我打电话data.ToCharArray()时,我注意到该字符串的第一个字节data是价值65279这是UTF-8字节顺序标记.我不明白的是为什么要Encoding.UTF8.GetString()保持这个字节.

如何获取Encoding.UTF8.GetString()把字节顺序标记得到的字符串中?

更新:问题在于GetData(),它从磁盘读取文件,使用从文件中读取数据FileStream.readbytes().我通过使用a StreamReader并使用字符串将字符串转换为字节来纠正这个问题Encoding.UTF8.GetBytes(),这应该是它本来应该做的事情!谢谢你的帮助.

c# unit-testing equality utf-8 visual-studio-2010

15
推荐指数
2
解决办法
1万
查看次数