問題是這樣的:
一個gb2312編碼的文本檔案,每對雙引號包含一個字串值,在內容有亂碼的情況下怎么正確識別雙引號位置?
我開始是這么讀的:
File.ReadAllLines(filePath, Encoding.GetEncoding(encoding));
出現意外的是下面這種情況:
比如前10個位元組都能在ascii字符集或gb字符集里找到對應字符,其中第一個位元組是前雙引號,到這里一切正常,而第11個位元組并非ascii字符、也不是gb字符的第一位元組,這時由于gb2312編碼每字符占兩位元組,ReadAllLines函式會把第11和12位元組當作一個字符處理,回傳一個'?'字符,如果第12字符恰好是后雙引號,這個雙引號就會被吞掉,請問有什么檔案讀取方式可以避免這種情況嗎?(不想以byte去讀檔案一位元組一位元組的去識別.....
我覺得會有解決辦法的原因,是因為用vs code以gb2312打開這個檔案的話,只有第11字符會變'?',第12字符的雙引號會被保留,所以想跟大家取個經,怎么才能達到vs code的效果
uj5u.com熱心網友回復:
按理說設定第二個引數Encoding就應該不會偏差。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/277944.html
標籤:C#
