2017-05-03 60 views
0

我正在開發一個使用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看到它之前已刪除了違規的反斜槓。

雖然這會導致問題。剩下的折線數據缺少原始數據,導致地圖上顯示的路線幾乎完全不同,特別是在小距離上。

+0

如果您要求如何將字符串從C#傳遞到JavaScript以避免轉義被忽略,請使用HttpUtility.JavaScriptStringEncode() –

+0

@AlexK轉義轉義。根據Visual Studio,這個HttpUtility命名空間不存在。 – oozbay

+0

您需要引用system.web或複製/粘貼源https://referencesource.microsoft.com/#System.Web/Util/HttpEncoder.cs,c0289ba7b2d459e5,references –

回答

0

嘗試以下:

步驟1:

//把折線數據轉換成字符串變量在使用它之前

串bfesc =「{konItyiI ?? mLxJaRhPwY}℃{[CUC \ ua @ qYw @[email protected]{VgZqTwTiHfE_N~ @ oOvg @ iVtg @ qVld @ {Vv @oV|[email protected]\jDr\~Hj[|GfXjDr[[email protected]@ BpQOdH ??「

步驟2: //刪除\Ú

nestr = bfesc.replace( 「\\ U」, 「」);

現在使用nestr

希望它有幫助!歡呼聲:)