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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

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

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

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

3 回答

?
MMTTMM

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊

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


查看完整回答
反對(duì) 回復(fù) 2019-10-30
?
慕尼黑5688855

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊

我的測(cè)試數(shù)據(jù)不正確,這使我有些困惑?;谌绾卧谧x取文件時(shí)避免跳入U(xiǎn)TF-8 BOM的問(wèn)題,我發(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;

}

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


查看完整回答
反對(duì) 回復(fù) 2019-10-30
  • 3 回答
  • 0 關(guān)注
  • 535 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)