jjgod / blog Random notes & thoughts.

Posts Tagged ‘NSString’

Cocoa 的 NSString 解码错误处理

在使用 Safari 的时候,我们会注意到一个很常见的乱码问题,如下图: 这是在打开 http://att.newsmth.net/att.php?p.719.214628.536.png 这样的图片链接时,Safari 错误的判断了这个图片文件的文件名造成的。而为什么会有这样的错误判断呢? 其实 Safari 使用的是 Cocoa 框架 URL Loading 架构中的 NSURLResponse 类的 suggestedFilename 方法实现的。 而这个方法,其实就是解析 HTTP 首部中的 Content-Disposition 域里的 filename 部分完成的,比如下面这个首部: $ curl -I http://att.newsmth.net/att.php?p.719.214628.536.png HTTP/1.1 200 OK …. Content-Disposition: inline;filename=ͼƬ_6.png …. 显然这是乱码,可奇怪的是,这和我们在上面的图中看到的乱码又不一样,这是为什么呢? 假如将它作为 GBK 来解码就清楚了: $ curl -I http://att.newsmth.net/att.php?p.719.214628.536.png | iconv -f gbk -t utf-8 HTTP/1.1 200 OK …. [...]