如何将 UTF→CP1251 转换为 URL-encoded %CA%F3%EF%E8%F2%FC+%EA%E2%E0%F0%F2%E8%F0%F3
How to convert UTF→CP1251 and finally to URL-encoded %CA%F3%EF%E8%F2%FC+%EA%E2%E0%F0%F2%E8%F0%F3
我有一个俄语短语“Купить квартиру”。我需要将其转换为
%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
但是这些字符串不相等。
有没有正确的转换方式?
Uri.EscapeDataString
遵循 URL 规范 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
我有一个俄语短语“Купить квартиру”。我需要将其转换为
%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
但是这些字符串不相等。
有没有正确的转换方式?
Uri.EscapeDataString
遵循 URL 规范 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