2016-03-27 21 views

cevap

2

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], 
+1

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? –

+1

@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 :) –