• 中文字符的编码转换


      当网址中含有中文字符时我们无法直接使用,需要把网址的字符串编码后再转为URL。

      由于url支持26个英文字母、数字和少数几个特殊字符,因此,对于url中包含非标准url的字符时,就需要对其进行编码。

      iOS中提供了函数stringByAddingPercentEscapesUsingEncoding对中文和一些特殊字符进行编码,但是stringByAddingPercentEscapesUsingEncoding的功能并不完善,对一些较为特殊的字符无效。而对这些字符则可以使用CFURLCreateStringByteAddingPercentEscapes函数,

      解码可以使用函数- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

    例:

    NSString* string1 = @"https://www.cloudsafe.com/文件夹";

    NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString* string3 = [string2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSString* string4 = [string2 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString* string5 = [string3 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSString* string6 = [string4 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString* string7 = [string5 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    输出结果: string5 & 6 重复编码encode

    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/文件夹

    那么这些函数该怎么理解呢,escape的英语意思是逃逸,在这里为什么用它?

    escape采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。

    在很多脚本语言的应用当中,escape函数是一个可转换编码的函数,比如javascript 的 ajax 中,向a.php传递参数?city=北京,可先将"北京"用escape重新编码,再进行传递,在服务器端接收后再解码才不会出现乱码。escape一般用于传递URL参数和类似urlencode base64_encode函数是类似的。如上?city=北京

    JAVA中escape()的使用

    定义和用法

    escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。

    语法

    escape(string)
    参数描述
    string 必需。要被转义或编码的字符串。

    返回值

    已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。

    说明

    该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ - _ + . / 。其他所有的字符都会被转义序列替换。

    提示和注释

    提示:可以使用 unescape() 对 escape() 编码的字符串进行解码。

    注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。

    实例

    在本例中,我们将使用 escape() 来编码字符串:

    <script type="text/javascript">
    
    document.write(escape("Visit W3School!") + "<br />")
    document.write(escape("?!=()#%&"))
    
    </script>

    输出:

    Visit%20W3School%21
    %3F%21%3D%28%29%23%25%26

    ios的字符串编码函数和JAVA相似,也许我们没学过JAVA,但是不得不承认其他编程语言的思想有助于我们的开发。程序语言都是相通的,把握住思想,我们才能在程序的世界发挥最大的潜力。

  • 相关阅读:
    JavaScript数据类型(第一天)
    数据库的事务隔离级别
    SSH(远程登录)原理
    Hadoop安装
    activiti学习第二天
    activiti学习第一天
    .net调用系统软键盘(兼容win7及win10)
    使用Blend设计出符合效果的WPF界面
    Mysql的收获
    PHP文件上传安全处理的步骤
  • 原文地址:https://www.cnblogs.com/yanban/p/4383567.html
Copyright © 2020-2023  润新知