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

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

JSON字符編碼-瀏覽器是否很好地支持UTF-8,還是應(yīng)該使用數(shù)字轉(zhuǎn)義序列?

JSON字符編碼-瀏覽器是否很好地支持UTF-8,還是應(yīng)該使用數(shù)字轉(zhuǎn)義序列?

萬千封印 2019-12-27 09:28:36
我正在編寫一個使用json表示其資源的web服務(wù),并且我在思考對json進行編碼的最佳方法有些困惑。讀取json rfc(http://www.ietf.org/rfc/rfc4627.txt)顯然,首選編碼是utf-8。但是RFC還描述了用于指定字符的字符串轉(zhuǎn)義機制。我認為這通常用于轉(zhuǎn)義非ASCII字符,從而使生成的utf-8有效ASCII。假設(shè)我有一個json字符串,其中包含非ascii的Unicode字符(代碼點)。我的Web服務(wù)應(yīng)該只是對utf-8編碼并返回它,還是應(yīng)該轉(zhuǎn)義所有這些非ascii字符并返回純ascii?我希望瀏覽器能夠使用jsonp或eval執(zhí)行結(jié)果。這會影響決策嗎?我缺乏對utf-8的各種瀏覽器javascript支持的知識。編輯:我想澄清一下,我對如何編碼結(jié)果的主要擔(dān)心實際上是關(guān)于瀏覽器對結(jié)果的處理。我所讀的內(nèi)容表明,特別是在使用JSONP時,瀏覽器可能對編碼敏感。我還沒有找到關(guān)于該主題的任何非常好的信息,所以我必須開始做一些測試才能看到會發(fā)生什么。理想情況下,我只想轉(zhuǎn)義所需的那幾個字符,而只是utf-8對結(jié)果進行編碼。
查看完整描述

3 回答

?
嚕嚕噠

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

JSON規(guī)范要求解碼器支持UTF-8。結(jié)果,所有JSON解碼器都可以處理UTF-8,也可以處理數(shù)字轉(zhuǎn)義序列。Java解釋器也是如此,這意味著JSONP也將處理UTF-8編碼的JSON。

JSON編碼器使用數(shù)字轉(zhuǎn)義序列的功能只是為您提供了更多選擇。選擇數(shù)字轉(zhuǎn)義序列的一個原因是,如果編碼器和預(yù)期的解碼器之間的傳輸機制不是二進制安全的。

你可能想要使用數(shù)字轉(zhuǎn)義序列的另一個原因是為了防止出現(xiàn)在流中的某些字符,例如<,&",如果JSON代碼被置于不逃逸到HTML或錯誤地將其解釋瀏覽器作為HTML,其可被解釋為HTML序列。這可以抵御HTML注入或跨站點腳本的攻擊(注意:某些字符必須在JSON中轉(zhuǎn)義,包括"\)。

一些框架,包括PHP的JSON實現(xiàn),總是在編碼器端對ASCII以外的任何字符執(zhí)行數(shù)字轉(zhuǎn)義序列。這旨在與有限的傳輸機制等實現(xiàn)最大的兼容性。但是,這不應(yīng)解釋為JSON解碼器在UTF-8上存在問題的指示。

因此,我想您可以像這樣決定使用哪個:

  • 除非您的編碼器和解碼器之間的存儲或傳輸方法不是二進制安全的,否則請僅使用UTF-8。

  • 否則,請使用數(shù)字轉(zhuǎn)義序列。


查看完整回答
反對 回復(fù) 2019-12-27
?
慕妹3242003

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

我在那里有問題。當我使用“é”等字符對字符串進行JSON編碼時,除IE會返回“ \ u00e9”外,每個瀏覽器都將返回相同的“é”。

然后使用PHP json_decode(),如果找到“é”,它將失敗,因此對于Firefox,Opera,Safari和Chrome,我必須在json_decode()之前調(diào)用utf8_encode()。

注意:在我的測試中,IE和Firefox使用的是本機JSON對象,其他瀏覽器使用的是json2.js。


查看完整回答
反對 回復(fù) 2019-12-27
?
慕少森

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

ASCII不再存在。使用UTF-8編碼意味著您沒有使用ASCII編碼。您應(yīng)該使用轉(zhuǎn)義機制的是RFC所說的:

除必須轉(zhuǎn)義的字符外,所有Unicode字符都可以放在引號內(nèi):引號,反斜線和控制字符(U + 0000至U + 001F)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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