为什么这些2个charecters£¬并没有被正确解码

问题描述:

我与外部API的工作,我想测试它如何接受特殊字符...所以我尝试发送以下值: -为什么这些2个charecters£¬并没有被正确解码

!"£$%^&*()_+-=[]{},./;'[]#?:@~{};:\|¬` 

这得到了保存在外部系统内部如下: -

!"%u00a3$%^&*()_+-=[]{},./;'[]#?:@~{};:\|%u00ac` 

这意味着外部API无法在%u00a3£解码,也无法在%u00ac¬解码?虽然它能够正确解码其他值......所以有没有一个原因,为什么它会以不同的方式处理£¬?换句话说,它无法正确解码这两个租船人?

第二点。因为我的api不支持这些类型的字符,那么有没有一种方法可以检查一个字符串是否包含这些值,并向用户显示一条错误消息,以避免添加这些字符?

+1

你怎么解码他们? – Steve

+0

@Steve我正在使用UriBuilder(apiurl);那里的apiurl将包含API的URI和传递的参数,包括英镑和¬值 –

外部API可能使用的ASCII字符集: https://en.wikipedia.org/wiki/ASCII

当角色£¬没有在ASCII字符集存在,API返回的字符(Unicode十六进制值%u以表明它是一个unicode字符和00ac,这是字符¬的十六进制值)。

这也可能是您发送该值的程序或读取字符串的方式的问题。没有进一步的信息就无法分辨。

+0

这是一个有效的观点,我认为...所以有没有办法阻止用户添加这些值?我的意思是我可以检查是否一个字符串包含非ASCII字符(如¬和£)并向用户显示错误消息? –

+0

@johnG我真的不太了解c sharp或html,因此您应该向其他人询问,或者搜索是否已在另一个问题中得到答案。 – fraret