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

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

如何使用JavaScript將特殊的UTF-8字符轉(zhuǎn)換為等效的iso-8859-1?

如何使用JavaScript將特殊的UTF-8字符轉(zhuǎn)換為等效的iso-8859-1?

慕絲7291255 2019-12-20 10:59:27
我正在制作一個(gè)JavaScript應(yīng)用程序,該應(yīng)用程序.json使用jquery 檢索文件,并將數(shù)據(jù)注入到其所嵌入的網(wǎng)頁中。這些.json文件使用UTF-8編碼,并包含重音字符,例如é,?和?。問題是我無法控制將要使用該應(yīng)用程序的頁面上的字符集。有些將使用UTF-8,但其他一些將使用iso-8859-1字符集。這當(dāng)然會(huì)使.json文件中的特殊字符亂碼。如何使用JavaScript將特殊的UTF-8字符轉(zhuǎn)換為等效的iso-8859-1?
查看完整描述

3 回答

?
GCT1015

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

實(shí)際上,所有內(nèi)容通常都在內(nèi)部以某種Unicode形式存儲(chǔ),但不要贅述。我假設(shè)您正在使用標(biāo)志性的“?¥?¤??”類型字符串,因?yàn)槟褂玫氖荌SO-8859作為字符編碼。您可以采取一種技巧來轉(zhuǎn)換這些字符。用于編碼和解碼查詢字符串的escape和unescape函數(shù)是為ISO字符定義的,而較新的encodeURIComponent和decodeURIComponent功能相同的函數(shù)是為UTF8字符定義的。


escape將擴(kuò)展的ISO-8859-1字符(UTF代碼點(diǎn)U + 0080-U + 00ff)%xx編碼為(兩位十六進(jìn)制),而將UTF代碼點(diǎn)U + 0100及更高版本編碼為%uxxxx(%u后跟四位十六進(jìn)制。)例如,escape("?") == "%E5"和escape("あ") == "%u3042"。


encodeURIComponent將擴(kuò)展字符百分比編碼為UTF8字節(jié)序列。例如encodeURIComponent("?") == "%C3%A5"和encodeURIComponent("あ") == "%E3%81%82"。


因此,您可以執(zhí)行以下操作:


fixedstring = decodeURIComponent(escape(utfstring));

例如,錯(cuò)誤編碼的字符“?”變成“?¥”。該命令執(zhí)行的操作escape("?¥") == "%C3%A5"是將兩個(gè)錯(cuò)誤的ISO字符編碼為單個(gè)字節(jié)。然后decodeURIComponent("%C3%A5") == "?",將兩個(gè)百分比編碼的字節(jié)解釋為UTF8序列。


如果您出于某種原因需要做相反的事情,那也可以:


utfstring = unescape(encodeURIComponent(originalstring));

有沒有辦法區(qū)分錯(cuò)誤的UTF8字符串和ISO字符串?原來有。如果給定格式錯(cuò)誤的編碼序列,則上面使用的encodeURIComponent函數(shù)將引發(fā)錯(cuò)誤。我們可以使用它來很有可能檢測(cè)我們的字符串是UTF8還是ISO。


var fixedstring;


try{

    // If the string is UTF-8, this will work and not throw an error.

    fixedstring=decodeURIComponent(escape(badstring));

}catch(e){

    // If it isn't, an error will be thrown, and we can assume that we have an ISO string.

    fixedstring=badstring;

}


查看完整回答
反對(duì) 回復(fù) 2019-12-20
?
守著一只汪

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

問題在于,一旦頁面被提供,內(nèi)容將采用內(nèi)容類型元標(biāo)記中描述的編碼?!板e(cuò)誤”編碼中的內(nèi)容已出現(xiàn)亂碼。


在提供頁面之前,最好在服務(wù)器上執(zhí)行此操作。或正如我所知道的說:UTF-8端到端或死亡。


查看完整回答
反對(duì) 回復(fù) 2019-12-20
  • 3 回答
  • 0 關(guān)注
  • 1446 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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