win10 uwp url encode

开发中,经常遇到使用中文无法作为 URL 传输的情况,如果想把 中文作为 URL 传输,那么需要对中文进行转换。 UWP 提供一些方法让我们很容易把 中文转为 URL ,但是转换还是有一些坑。 我最近图床使用中文图片上传,地址出现错误。 原因是URL不支持中文,所以需要把中文转URL可以认识字符,那么如何转? 我发现有好多个方法去转,下面将会告诉大家我知道所有方法。

可以使用的函数有三个 Uri.EscapeDataString WebUtility.UrlEncode WebUtility.HtmlEncode 都可以进行转换,但是这三个是不同的。

对于中文,Uri.EscapeDataString WebUtility.UrlEncode转换得到是一样。

对于符号,Uri.EscapeDataString WebUtility.UrlEncode 有一点不同。

WebUtility.HtmlEncode 做的转换很少,是将 html 源文件中不容许出现的字符进行编码,于是他的作用是比较小的。

Uri.EscapeDataString WebUtility.UrlEncode WebUtility.HtmlEncode 对应的是 Uri.UnescapeDataString WebUtility.UrlDecode WebUtility.HtmlDecode,如果从中文转 URL 就可以用他们弄回来。

先写一个测试使用代码,看看对 对字符串:“~+ =!@$#^&*http://lindexi.oschina.io”转换的到的是什么

通过 Uri.EscapeUriString 返回 “~+%20=!@$#%5E&*http://lindexi.oschina.io”

WebUtility.UrlEncode 返回 “%7E%2B+%3D!%40%24%23%5E%26*http%3A%2F%2Flindexi.oschina.io”

他们都是标准,关于区别,请看 http://stackoverflow.com/a/11236038/6116637

WebUtility.HtmlEncode 可以转 &# ,把 <&lt;>&gt; 所以需要在UWP进行这个转换就可以使用函数。

如果希望继续看三个转换有哪些不同,请看下面,我做了不同字符使用三个函数获得的。

Uri.EscapeUriString

Uri.EscapeDataString

WebUtility.UrlEncode

WebUtility.HtmlEncode

空格

%20

%20

+

空格

!

!

%21

!

!

+

+

+

+

+

%22

%22

%22

"

#

#

%23

%23

#

$

$

%24

%24

$

*

*

%2A

*

*

(

(

%28

(

(

)

)

%29

)

)

~

~

~

%7E

~

1

1

1

1

1

2

2

2

2

2

3

3

3

3

3

a

a

a

a

a

b

b

b

b

b

:

:

%3A

%3A

:

%27

%27

&#39;

<

%3C

%3C

%3C

&lt;

>

%3E

%3E

%3E

&gt;

[

[

%5B

%5B

[

]

]

%5D

%5D

]

/

/

%2F

%2F

/

{

%7B

%7B

%7B

{

}

%7D

%7D

%7D

}

|

|

|

|

|

,

,

%2C

%2C

,

?

?

%3F

%3F

?

%E4%B8%AD

%E4%B8%AD

%E4%B8%AD

%E6%96%87

%E6%96%87

%E6%96%87

https://blogs.msdn.microsoft.com/yangxind/2006/11/08/dont-use-net-system-uri-unescapedatastring-in-url-decoding/


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏五毛程序员

五毛的cocos2d-x学习笔记07-计时器、数据读写、文件读写

28650
来自专栏java小记

java多线程学习(1)-锁的简介

非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。

11300
来自专栏IT技术精选文摘

ZooKeeper 分布式锁实现

20120
来自专栏Java与Android技术栈

使用Kotlin高效地开发Android App(二)总结

继上一篇文章介绍了项目中所使用的Kotlin特性,本文继续整理当前项目所用到的特性。

15520
来自专栏MasiMaro 的技术博文

ATL模板库中的OLEDB与ADO

上次将OLEDB的所有内容基本上都说完了,从之前的示例上来看OLEDB中有许多变量的定义,什么结果集对象、session对象、命令对象,还有各种缓冲等等,总体上...

17020
来自专栏为数不多的Android技巧

Android 插件化原理解析——插件加载机制

上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务;通过Hook AMS和...

28910
来自专栏程序员的SOD蜜

PostgreSQL的.NET驱动程序Npgsql中参数对象的一个Bug

最近将公司的项目从SqlServer移植到PostgreSQL数据库上来,在调用数据库的存储过程(自定义函数)的时候,发现一个奇怪的问题,老是报函数无法找到。 ...

32870
来自专栏青玉伏案

iOS逆向工程之Hopper中的ARM指令

虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学。现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少...

37170
来自专栏移动端开发

Android学习--还有一些小技巧

      通过上面的这些文章,就把简单的安卓项目总结了一遍,当然你说懂这些就可以做Android开发的话还是不行的,欠缺的还有很多,但欠缺的这些我们有只能在工...

11630
来自专栏木木玲

Netty 源码解析 ——— AdaptiveRecvByteBufAllocator

39620

扫码关注云+社区

领取腾讯云代金券