第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從C#中的字符串中刪除字節(jié)順序標記

從C#中的字符串中刪除字節(jié)順序標記

C#
catspeake 2019-12-15 12:08:37
我讀過類似的文章,但他們沒有回答我的問題。在C#中,我有一個從WebClient.DownloadString獲得的字符串。我嘗試將client.Encoding設置為新的UTF8Encoding(false),但這沒什么區(qū)別-我仍然在結果字符串的開頭以UTF-8的字節(jié)順序標記結束。我需要刪除它(以使用LINQ解析生成的XML),并希望在內存中刪除它。所以我有一個以\ x00EF \ x00BB \ x00BF開頭的字符串,如果存在,我想刪除它?,F(xiàn)在我正在使用if (xml.StartsWith(ByteOrderMarkUtf8)){    xml = xml.Remove(0, ByteOrderMarkUtf8.Length);}但這感覺不對。我已經(jīng)嘗試了使用流,GetBytes和編碼的各種代碼,但是沒有任何效果。誰能提供從字符串中剝離BOM的“正確”算法?謝謝!
查看完整描述

3 回答

?
長風秋雁

TA貢獻1757條經(jīng)驗 獲得超7個贊

如果變量xml是字符串類型,則您已經(jīng)做錯了-在字符串中,BOM不應表示為三個單獨的字符,而應表示為單個代碼點。不要使用DownloadString,而要使用DownloadData,并解析字節(jié)數(shù)組。XML解析器應該識別BOM本身,然后跳過它(自動檢測文檔編碼為UTF-8除外)。


查看完整回答
反對 回復 2019-12-16
?
白豬掌柜的

TA貢獻1893條經(jīng)驗 獲得超10個贊

我的測試數(shù)據(jù)不正確,這使我有些困惑?;谌绾卧谧x取文件時避免跳入UTF-8 BOM的問題,我發(fā)現(xiàn)這可行:


private readonly string _byteOrderMarkUtf8 =

    Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble());


public string GetXmlResponse(Uri resource)

{

    string xml;


    using (var client = new WebClient())

    {

        client.Encoding = Encoding.UTF8;

        xml = client.DownloadString(resource);

    }


    if (xml.StartsWith(_byteOrderMarkUtf8, StringComparison.Ordinal))

    {

        xml = xml.Remove(0, _byteOrderMarkUtf8.Length);

    }


    return xml;

}

正確設置客戶端的Encoding屬性可將BOM減少為單個字符。但是,XDocument.Parse仍然不會讀取該字符串。這是我到目前為止提出的最干凈的版本。



查看完整回答
反對 回復 2019-12-16
  • 3 回答
  • 0 關注
  • 363 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號