url有中文怎么处理,URL中文名是什么

http://www.itjxue.com  2023-01-20 17:16  来源:未知  点击次数: 

后端返回URL含有中文进行编码、解码处理

处理这个问题的初衷是:后端返回的用于跳转web页面的URL含有中文,WKWebView在加载包含中文的URL时发生了转义而无法加载只是显示空白页面。需要对包含中文的URL进行编码处理以防止发生转义。

处理方式很简单:

- (NSString*)urlEncode:(NSString*)urlString {

#pragma clang diagnostic push

#pragma clang diagnostic ignored"-Wdeprecated-declarations"

? ? NSString *encodedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (CFStringRef)urlString,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (CFStringRef)@"!$'()*+,-./:;=?@_~%#[]",

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NULL,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? kCFStringEncodingUTF8));

? ? returnencodedString;

#pragma clang diagnostic pop

}

- (NSString*)urlDecode:(NSString*)urlString? {

#pragma clang diagnostic push

#pragma clang diagnostic ignored"-Wdeprecated-declarations"

? ? ? ? CFStringEncoding en = CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding);

? ? ? ? NSString *decoded = [urlString stringByReplacingOccurrencesOfString:@"+"

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? withString:@" "];

? ? ? ? decoded = (__bridge_transferNSString*)

? ? ? ? CFURLCreateStringByReplacingPercentEscapesUsingEncoding(

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NULL,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (__bridgeCFStringRef)decoded,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? CFSTR(""),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? en);

? ? ? ? returndecoded;

#pragma clang diagnostic pop

}

对需要编码处理的URL进行编码处理即可,例子如下:

NSString *urlStr = @";sceneCode=10025sign=ed37f0a3a541af5aa11cd273c65f2e44partnerOrderCode=Z1007876566testpayTypeCode=TC0036payMethodCode=10002recipientName=中通快递platform=txkdg";

?NSString*encodeString = [self urlEncode:urlStr];

NSLog(@"编码encodeString===%@",encodeString);

打印结果为: ;sceneCode=10025sign=ed37f0a3a541af5aa11cd273c65f2e44partnerOrderCode=Z1007876566testpayTypeCode=TC0036payMethodCode=10002recipientName=%E4%B8%AD%E9%80%9A%E5%BF%AB%E9%80%92platform=txkdg

需要解码回中文的话字节调用解码方法即可。

网络请求. url中有中文时

网络相关

网络请求. url中有中文时

网络请求中, 当url中有中文时

// 对url中的中文进行转码(如果已知url中的中文没有进行utf-8转码)

url = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

如果知道url中的中文既可能已经转码,也可能没有转码,那么使用如下的方法,当不管url中的中文是否已经utf-8转码了,都可以解决将中文字符转为utf-8的问题,且不是二次转码

摘自:

[ 编码 ] URL编码-URL中有中文 怎么办?

URL编码是对字符进行编码,表示成%xx的形式

URL编码是浏览器发送数据给服务器时使用的编码,它通常附加在URL的参数部分,例如:

;tl=entext= 摘要op=translate

这里的"摘要"如果不进行转码是有问题的

之所以需要URL编码,是因为出于兼容性考虑,很多服务器只识别ASCII字符,不转码可能会出现乱码的情况。但如果URL中包含中文、日文这些非ASCII字符怎么办?不要紧,URL编码有一套规则:

摘要 结果是 %E6%91%98%E8%A6%81

韩国尊称 结果是 %E9%9F%A9%E5%9B%BD%E5%B0%8A%E7%A7%B0

url中含有中文

Tomcat URL包含中文编码(百分号)

当requst请求的URL中包含非ascii字符时,通常会做预处理,将这些字符转换为utf-8的编码,并且每字节间用百分号间隔,这个预处理过程浏览器能做,js中EncodingURL函数也能做。Tomcat作为服务器接收到这样的编码URL时,通常会解码错误,导致出现404错误,解决办法:在服务器server.xml中配置对应的端口中配置编码方式即可.例如:

Connector port="8080"maxThreads="150" minSpareThreads="25"

maxSpareThreads="75"enableLookups="false" redirectPort="8443"

acceptCount="100"debug="0" connectionTimeout="20000"

disableUploadTimeout="true" useBodyEncodingForURI="true"

URIEncoding="UTF-8"/

中加入useBodyEncodingForURI="true"

URIEncoding="UTF-8"如果中文是在参数里,服务器action获取参数的方法:String(request.getParameter("name").getBytes('iso8859-1'),"utf-8")

解决获取url上中文乱码问题

1,在发送端页面用encodeURI()函数,在接收端页面使用decodeURI()函数,这样就可以有效的解决在获取url上的中文出现乱码的情况

例子:

var url = encodeURL(url) //?发送端页面。

var url = decodeURL(window.location.href) //?接收端页面。

[iOS]url中中文的处理

在实际请求的时候,如果请求参数中包含有中文,服务器可能会不识别。可以采用以下方法:

处理完字符串后,再拼接在url上即可。

(责任编辑:IT教学网)

更多