Bu nasılNasıl decodeURIComponent? (Örnek: "% 2F% 3F% 26% 3D" -> "?/& =")
qqqq/wwww?eeee&rrrr=tttt
bu
qqqq%2Fwwww%3Feeee%26rrrr%3Dtttt
dönüştürmek için?
Kod çözmenin kolay yolu var mı?
Bu nasılNasıl decodeURIComponent? (Örnek: "% 2F% 3F% 26% 3D" -> "?/& =")
qqqq/wwww?eeee&rrrr=tttt
bu
qqqq%2Fwwww%3Feeee%26rrrr%3Dtttt
dönüştürmek için?
Kod çözmenin kolay yolu var mı?
kütüphane işlevinikodlayan bir URI var, ancak kod çözme işleminde tersi bir tersi yoktur (bu bir gözetim olabilir). Kendi yazma herhangi ASCII olmayan karakterler varsa "%" üzerinde yerini metin biraz daha karmaşıktır https://ideas.powerbi.com
bu özellik önermek için çekinmeyin. İşte
sonra bayt kurar UTF-8 ikili olarak metne dönüştüren bir M uygulama görebilirsiniz:let
InputData = Csv.Document("a=b
=ab
ab=
abc☃def"),
Uri.UnescapeDataString = (data as text) as text => let
ToList = Text.ToList(data),
Accumulate = List.Accumulate(ToList, [ Bytes = {} ], (state, current) =>
let
HexString = state[HexString]?,
NextHexString = HexString & current,
NextState = if HexString <> null
then if Text.Length(NextHexString) = 2
then [ Bytes = state[Bytes] & Binary.ToList(Binary.FromText(NextHexString, BinaryEncoding.Hex)) ]
else [ HexString = NextHexString, Bytes = state[Bytes] ]
else if current = "%"
then [ HexString = "", Bytes = state[Bytes] ]
else [ Bytes = state[Bytes] & { Character.ToNumber(current) } ]
in
NextState),
FromBinary = Text.FromBinary(Binary.FromList(Accumulate[Bytes]))
in
FromBinary,
AddEscaped = Table.AddColumn(InputData, "Escaped", each Uri.EscapeDataString([Column1])),
AddUnescaped = Table.AddColumn(AddEscaped, "Custom", each Uri.UnescapeDataString([Escaped]))
in
AddUnescaped
(yukarıda tür gurur duyuyorum, ama daha kolay bir düşünce Böylece, tüm verilerin düzgün kodlanmış olduğunu biliyorsanız)
bir URL'ye dizeyi bağlamak ve benzeri Uri.Parts
URL kod çözme özelliği kaldıraç olabilir.
Uri.UnescapeDataString = (data as text) as text =>
Uri.Parts("http://whatever?a=" & data)[Query][a],
Yani Uri.Parts bir URL kod çözme özelliğine sahiptir - kim bilir? Başka bir M gem için teşekkürler Carl, ne yazık ki belgelenmemiş ... Bu bilgi https://msdn.microsoft.com/en-us/library/mt260886.aspx, belki de daha eksiksiz bir örnek ile ekleyebilir miyim? –
@MikeHoney önerisi için teşekkürler, bunu MSDN belgelerine ekledik ve sonraki ürün sürümüyle çıkacak. Başka dokümantasyon fikirleriniz varsa, onları gelmeye devam edin :) –