Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net字符串类型-默认情况下是否为utf16?_.net_String_Encoding_Base64_Utf - Fatal编程技术网

.net字符串类型-默认情况下是否为utf16?

.net字符串类型-默认情况下是否为utf16?,.net,string,encoding,base64,utf,.net,String,Encoding,Base64,Utf,我编写了这个小测试用例,试图理解base64编码,但我遇到了这个问题 请参见下文,为什么stringUtf16和stringDefault来自编码。默认值不相等? 一个长度为4,另一个长度为3。。。但在屏幕上显示相同的内容 谢谢 [TestMethod] public void EncodingTest() { var raw = new byte[] { 0x63, 0xE8, 0x3F }; string stringUtf16 =

我编写了这个小测试用例,试图理解base64编码,但我遇到了这个问题

请参见下文,为什么stringUtf16和stringDefault来自编码。默认值不相等? 一个长度为4,另一个长度为3。。。但在屏幕上显示相同的内容

谢谢

    [TestMethod]
    public void EncodingTest()
    {
        var raw = new byte[] { 0x63, 0xE8, 0x3F }; 
        string stringUtf16 = "cè?"; // .Net uses UTF-16 encoding by default
        Console.WriteLine("Utf16: " + stringUtf16);
        string encodedBase64 = "Y+g/";

        stringUtf16.Length.Should().Be(4);

        //------ Verify Encodings
        var stringDefault = Encoding.Default.GetString(raw);
        Console.WriteLine("Default: " + stringDefault);
        stringDefault.Length.Should().Be(3);
        // stringDefault.Should().Be(stringUtf16); // FAILS HERE! 

        var stringUnicode = Encoding.Unicode.GetString(raw);
        Console.WriteLine("Unicode: " + stringUnicode);
        stringUnicode.Should().NotBe(stringUtf16);

        var stringAscii = Encoding.ASCII.GetString(raw);
        Console.WriteLine("Ascii: " + stringAscii);
        stringAscii.Should().NotBe(stringUtf16);

        var stringUtf8 = Encoding.UTF8.GetString(raw);
        Console.WriteLine("UTF8: " + stringUtf8);
        stringUtf8.Should().NotBe(stringUtf16);

        string stringBase64 = Convert.ToBase64String(raw);
        Console.WriteLine("Base64: " + stringBase64);
        stringBase64.Should().NotBe(stringUtf16);
        stringBase64.Should().Be(encodedBase64);


        //------ Verify Decodings
        byte[] decodedBytes = Convert.FromBase64String(encodedBase64);
        decodedBytes.Length.Should().Be(3);

        string decodedText = Encoding.Default.GetString(decodedBytes);
        Console.WriteLine(decodedText);
        decodedText.Length.Should().Be(3);
        decodedText.Should().Be(stringDefault);
    }

对。请查看文档:

每个代码点都使用UTF-16编码