doutan1637 2009-01-29 14:00
浏览 54
已采纳

你能将php函数quoted_printable_decode()转换为基于NSString的objective-C函数/类别方法吗?

In http://php.net/quoted_printable_decode, I found ways to do it using preg_replace. Anyone who knows any code that could convert a normal NSString to something RFC 2045 section 6.7?

Thanks in advance!

  • 写回答

2条回答 默认 最新

  • dongyun4010 2009-01-30 01:58
    关注

    There's no method on Cocoa to decode a quoted printable string, but you could easily write something yourself, like:

    @interface NSString (QuotedPrintableStrings)
    +(NSString*)stringWithQuotedPrintableString:(const char *)qpString;
    @end
    
    @implementation NSString (QuotedPrintableStrings)
    
    +(NSString*)stringWithQuotedPrintableString:(const char *)qpString
    {
        const char *p = qpString;
        char *ep, *utf8_string = malloc(strlen(qpString) * sizeof(char));
        NSParameterAssert( utf8_string );
        ep = utf8_string;
    
        while( *p ) {
            switch( *p ) {
                case '=':
                    NSAssert1( *(p + 1) != 0 && *(p + 2) != 0, @"Malformed QP String: %s", qpString);
                    if( *(p + 1) != '' ) {
                        int i, byte[2];
                        for( i = 0; i < 2; i++ ) {
                            byte[i] = *(p + i + 1);
                            if( isdigit(byte[i]) )
                                byte[i] -= 0x30;
                            else
                                byte[i] -= 0x37;
                            NSAssert( byte[i] >= 0 && byte[i] < 16, @"bad encoded character");
                        }
                        *(ep++) = (char) (byte[0] << 4) | byte[1];
                    }
                    p += 3;
                    continue;
                default:
                    *(ep++) = *(p++);
                    continue;
            }
        }
        return [[[NSString alloc] initWithBytesNoCopy:utf8_string length:strlen(utf8_string) encoding:NSUTF8StringEncoding freeWhenDone:YES] autorelease];
    }
    
    @end
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大