ShannonChenCHN / iOSDevLevelingUp

A journey of leveling up iOS development skills and knowledge.
365 stars 105 forks source link

NSString 与字符串 #1

Open ShannonChenCHN opened 7 years ago

ShannonChenCHN commented 7 years ago
ShannonChenCHN commented 6 years ago
ShannonChenCHN commented 6 years ago

延伸阅读:

ShannonChenCHN commented 6 years ago

URL 编码

对含有中文的 URL 字符串进行 URL 编码,可以使用 stringByAddingPercentEscapesUsingEncoding: 方法,但是该方法在 iOS 9 以后就被废弃了。取而代之的是 stringByAddingPercentEncodingWithAllowedCharacters: 方法。

How to encode a URL in Swift 文中,作者分析可能是因为 stringByAddingPercentEscapesUsingEncoding: 方法会对整个 URL 进行编码,而导致有些不需要编码的部分也被处理了,而 stringByAddingPercentEncodingWithAllowedCharacters: 方法可以更精确地指定某段内容需要编码。

2018-01-30 3 58 42
NSString *encoededURLString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

需要注意的是,不要对一个 URL 重复进行 URL编码,否则会导致解析失败。

参考:

ShannonChenCHN commented 6 years ago

MD5 算法

ShannonChenCHN commented 6 years ago

字符集和字符编码

ShannonChenCHN commented 4 years ago

NSString 和 Unicode

1. 什么是编码?

2. 什么是 Unicode?

2.1 Unicode 的起源

2.2 Mac 上如何查看 Unicode 字符表?

Control + command + 空格键

什么是码点(code points)?

Unicode 标准为世界上几乎所有的书写系统里所使用的每一个字符或符号定义了一个唯一的数字。这个数字叫做码点(code points),以 U+xxxx 这样的格式写成,格式里的 xxxx 代表四到六个十六进制的数。比如,U+0041(十进制是 65)这个码点代表拉丁字母表(和 ASCII 一致)里的字母 AU+1F61B 代表名为“伸出舌头的脸”的 emoji,也就是 😛。

为什么说 Unicode 不是 16 位编码的,而是 21 位编码?

什么是 Private Use Areas

Unicode 里面的 Plane 指的是什么?

3. Unicode 的特性

组合字符序列(Combining Character Sequences)

重复的字符(Duplicate Characters)

什么是 Unicode Normalization?

字形变体(Glyph Variants)

4. Unicode 转换格式(Unicode Transformation Formats, UTF)

UTF-32

UTF-16

为什么 UTF-8 不存在字节序的问题?

NSString 和 Unicode

默认情况下,Clang 会把源文件看作以 UTF-8 编码的。只要你确保 Xcode 以 UTF-8 编码保存文件,你就可以直接用字符显示程序插入任意字符。如果你更喜欢用码点,最大到 U+FFFF 这个范围内的码点你可以以 @"\u266A"(♪)的方式输入,BMP 外其它平面的码点则以 @"\U0001F340"(🍀)的方式输入。另外,C99 不允许标准 C 字符集里的字符用通用字符名(universal character name)来指定。

Little endian 和 Big endian 分别指的是什么?

参考资料