如何转换UTF→CP1251,最后转换为URL编码%CA%F3%EF%E8%F2%FC +%EA%E2%E0%F0%F2%E8%F0%F3

时间:2015-12-07 04:25:29

标签: powerbi powerquery

我有一个俄语短语“Купитьквартиру”。我需要将其转换为

%CA%F3%EF%E8%F2%FC+%EA%E2%E0%F0%F2%E8%F0%F3

编码看起来像ANSI

注意,如果我 Uri.EscapeDataString(Купитьквартиру,我会

%D0%9A%D1%83%D0%BF%D0%B8%D1%82%D1%8C%20%D0%BA%D0%B2%D0%B0%D1%80%D1%82%D0%B8%D1%80%D1%83

但这些字符串不相等。

有没有正确的转换方式?

1 个答案:

答案 0 :(得分:1)

Uri.EscapeDataString遵循网址规范RFC 3986,即使用UTF-8字符编码。

您需要在自定义M中编写自己的函数,如下所示:

let
    To1251URL = (input as text) as text => let
        ToBytes = Binary.ToList(Text.ToBinary(input, 1251)),
        ToText = Text.Combine(List.Transform(ToBytes, (b) => "%" & Number.ToText(b, "X"))),
        FixSpace = Text.Replace(ToText, "%20", "+")
    in
        FixSpace,
    Applied = To1251URL("Купить квартиру")
in
    Applied