zoukankan      html  css  js  c++  java
  • 解决URL中文乱码问题

    在做一个HTTPS连接时, 要客户端合成一段HTTPS地址

    如果地址含中文的话程序会crash, 检查发现原来是中文没有转码的原因

    在NSString库里面找到了下面两个方法

    - (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
    - (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

    试了下, 有效

     1 NSString* string1 = @"https://www.cloudsafe.com/文件夹";
     2 
     3 NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
     4 NSString* string3 = [string2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
     5 
     6 NSString* string4 = [string2 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
     7 NSString* string5 = [string3 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
     8 
     9 NSString* string6 = [string4 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    10 NSString* string7 = [string5 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    输出string1-7结果如下

    string1:https://www.cloudsafe.com/文件夹
    
    string2:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9
    string3:https://www.cloudsafe.com/%25E6%2596%2587%25E4%25BB%25B6%25E5%25A4%25B9
    
    string4:https://www.cloudsafe.com/文件夹
    string5:https://www.cloudsafe.com/%E6%96%87%E4%BB%B6%E5%A4%B9
    
    string6:https://www.cloudsafe.com/文件夹
    string7:https://www.cloudsafe.com/文件夹

    简单说下我是如何使用的:

    在合成URL后, 给整个String转码两次

    1 NSMutableString *address = [[NSMutableString stringWithString:SetNiChengStringWithoutUserNameAndNiCheng] mutableCopy];
    2     address = [[address stringByAppendingString:app.name] mutableCopy];
    3     address = [[address stringByAppendingString:@"/"] mutableCopy];
    4     address = [[address stringByAppendingString:_nameTextField.text] mutableCopy];
    5     address = [[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] mutableCopy];
    6     address = [[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] mutableCopy];

    服务器端如何只是简单存储, 服务器接收数据后可以不用转码成中文

    当客户端请求这部分数据时, 由客户端自己解码就好了

    获取到字串后解码一次就可以正常显示为中文了:

    1 str = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  • 相关阅读:
    C++ SOCKET 基础编程
    Linux 基础
    Python 基础
    H5禁止微信内置浏览器调整字体大小
    css中 出现height为100%失效的原因及解决方案
    CSS3 clip-path 用法介绍
    Web的26项基本概念和技术
    Web前端年后跳槽面试复习指南
    基于 HTML5 Canvas 的交互式地铁线路图
    常用长度单位PX/EM/PT/百分比转换公式与对照表
  • 原文地址:https://www.cnblogs.com/zhouxihi/p/5990311.html
Copyright © 2011-2022 走看看