我正在开发一个使用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 –