我正在開發一個使用ASP.NET Core的Web應用程序,它使用他們的API在Google Maps上顯示路線。其中一種方式是使用編碼後的折線數據,它從我們的後端服務器獲取。問題是,當我拉過這樣的值:如何忽略Javascript/C#中的Unicode轉義序列?
{konItyiI??mLxJaRhPwY}C{[cUc\[email protected]`@[email protected]{VgZqTwTiHfE_N~`@[email protected]@[email protected]{Vv`@oV|[email protected]\jDr\~Hj[|GfXjDr[[email protected]@`BpQOdH??
然後使用Javascript拋出Uncaught SyntaxError: Invalid Unicode escape sequence
和地圖永遠不會顯示。這是因爲折線數據中存在「\ u」。它與其他不包含此數據的多段線正常工作。
有沒有辦法忽略使用Javascript的Unicode轉義序列?到目前爲止,我發現的所有內容只涉及使字符串成爲HTML安全的,這不是此處練習的目標。
更新:
我無法使用: var coords = "@Models.Polyline".replace("\\", "");
因爲被宣佈爲字符串,當異常發生。
不過,我能使用: var coords = "@Models.Polyline.Replace("\\", "")";
使用C#替換()方法,而不是JavaScript的replace()方法。
這意味着當JavaScript嘗試將其解析爲字符串時,數據不會引發異常,因爲在JS看到它之前已刪除了違規的反斜槓。
雖然這會導致問題。剩下的折線數據缺少原始數據,導致地圖上顯示的路線幾乎完全不同,特別是在小距離上。
如果您要求如何將字符串從C#傳遞到JavaScript以避免轉義被忽略,請使用HttpUtility.JavaScriptStringEncode() –
@AlexK轉義轉義。根據Visual Studio,這個HttpUtility命名空間不存在。 – oozbay
您需要引用system.web或複製/粘貼源https://referencesource.microsoft.com/#System.Web/Util/HttpEncoder.cs,c0289ba7b2d459e5,references –