2017-05-03 30 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

希望它有帮助!欢呼声:)