私はAPIを使ってGoogle Maps上のルートを表示するASP.NET Coreを使ってWebアプリケーションを開発しています。これを行う方法の1つは、エンコードされたポリラインデータで、バックエンドサーバーから取得します。問題は、私はこのような値を通じて引っ張るときということです: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("\\", "");
文字列が宣言されたときに例外が発生したため。代わりに、JavaScriptのreplace()メソッドのC#replace()メソッドを使用して var coords = "@Models.Polyline.Replace("\\", "")";
:
はしかし、私は使用をできました。
これは、JavaScriptが文字列リテラルに解析しようとすると、データが例外を発生させないことを意味します。これは、JSがそれを見る前に違反しているバックスラッシュが削除されたためです。
これは問題を引き起こします。残っているポリラインデータには、地図上に表示されたルートが、特に遠距離ではほとんど完全に異なるというオリジナルのデータが不足しています。
エスケープが無視されるようにC#からJavaScriptに文字列を渡す方法を尋ねる場合は、HttpUtility.JavaScriptStringEncode() –
@AlexKを使用してエスケープをエスケープします。 Visual Studioによると、このHttpUtility名前空間は存在しません。 – oozbay
ソースをhttps://referencesource.microsoft.com/#System.Web/Util/HttpEncoder.cs,c0289ba7b2d459e5,referencesにコピーするか、system.webを参照する必要があります。 –