我使用的是标准httpc客户二郎,用于发送/接收请求一些服务。 有时候,我在我的网址西里尔路径。 我怎样才能URL编码西里尔网址?
谢谢。
我使用的是标准httpc客户二郎,用于发送/接收请求一些服务。 有时候,我在我的网址西里尔路径。 我怎样才能URL编码西里尔网址?
谢谢。
~/erl$erl
Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.8.5 (abort with ^G)
1> Encoded = edoc_lib:escape_uri("абвгдеё").
"%c0%b0%c0%b1%c0%b2%c0%b3%c0%b4%c0%b5%c1%91"
2> http_uri:decode(Encoded).
[192,176,192,177,192,178,192,179,192,180,192,181,193,145]
您可以使用list_to_binary为二进制使用。
我有一些麻烦与EDOC lib中escape_uri。
所以,我最后写一个使用UTF-8的工作原理:
https://stackoverflow.com/a/12648499/113112
https://gist.github.com/3796470
防爆。
Eshell V5.9.1 (abort with ^G)
1> c(encode_uri_rfc3986).
{ok,encode_uri_rfc3986}
2> encode_uri_rfc3986:encode("абвгдеё").
"%d0%b0%d0%b1%d0%b2%d0%b3%d0%b4%d0%b5%d1%91"
3> edoc_lib:escape_uri("абвгдеё").
"%c0%b0%c0%b1%c0%b2%c0%b3%c0%b4%c0%b5%c1%91" # output wrong: À°À±À²À³À´ÀµÁ‘