我無法理解什麼String.Substring方法做。這裏是我的代碼(這是由我添加了一些代碼的VisualStudio香草C#控制檯應用程序):C#的StreamReader或字符串讀取字符多於問
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
namespace foo {
class Program
{
static void Main(string[] args)
{
String pathToFile = "the-path-to-the-file";
using (StreamReader streamReader = new StreamReader(pathToFile))
{
Console.OutputEncoding = System.Text.Encoding.UTF8;
Console.WriteLine("encoding = " + streamReader.CurrentEncoding);
String fileContents = streamReader.ReadToEnd();
Console.WriteLine("encoding = " + streamReader.CurrentEncoding);
String substring = fileContents.Substring(0, 35);
Console.WriteLine("substring length = " + substring.Length);
Console.WriteLine("substring = " + substring);
Console.OutputEncoding = System.Text.Encoding.Default;
Console.WriteLine("encoding = " + streamReader.CurrentEncoding);
}
}
}
}
在pathToFile發現該文件包含:
from殲ç'・ダ€這,|ルダラ€ - ラ©.endxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
這在十六進制是:
00000000h: 66 72 6F 6D E6 AE B2 E7 90 B4 E3 83 BB E3 83 80 ; from殲ç´ãƒ»ãƒ€
00000010h: E3 82 A6 E3 83 AB E3 83 80 E3 83 96 E3 83 A9 2E ; ウルダブラ.
00000020h: 65 6E 64 78 78 78 78 78 78 78 78 78 78 78 78 78 ; endxxxxxxxxxxxxx
00000030h: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 ; xxxxxxxxxxxxxxxx
個
程序輸出:
編碼= System.Text.UTF8Encoding
編碼= System.Text.UTF8Encoding
串長度= 35
子=from殲ç'・ #endxxxxxxxxxxxxxxxxxx
encoding = System.Text.UTF8Encoding
儘管我希望它輸出:
編碼= System.Text.UTF8Encoding
編碼= System.Text.UTF8Encoding
串長度= 35
子= from殲ç'・ダ€ã,|ルダラ€ - ラ©.END
編碼= System.Text.UTF8Encoding
所以我的問題是,爲什麼substring.Length
回35但substring
似乎包含> 35個字符?我錯誤地使用了String.Substring
嗎?或者它與StreamReader
有關?或者是其他東西?
你確定該文件是ut8編碼嗎? –
請勿使用字符串來操作二進制數據。 –
請花時間格式化您的代碼,但*不*使用'>'引用它所有的... –