Tag: 编码

iOS:什么是检测文件编码的最佳方式

在某些情况下,我真的需要在读取文件时知道文件的编码。 有时我们可以像苹果的String Programming Guide一样做: 读取未知编码的数据 如果你发现自己的文本是未知的编码,最好确保有一个机制来纠正不可避免的错误。 例如,Apple的Mail和Safari应用程序具有编码菜单,TextEdit允许用户使用明确指定的编码重新打开该文件。 如果你不得不猜测编码(并注意在没有明确信息的情况下,这是一个猜测): 尝试stringWithContentsOfFile:usedEncoding:error:或者initWithContentsOfFile:usedEncoding:error :(或者基于URL的等价物)。 这些方法试图确定资源的编码,如果成功则通过引用返回所使用的编码。 如果(1)失败,则尝试通过指定UTF-8作为编码来读取资源。 如果(2)失败,请尝试使用适当的传统编码。 这里的“恰当”在一定程度上取决于情况。 它可能是默认的Cstring编码,它可能是ISO或Windows拉丁语1,或其他,这取决于你的数据来自哪里。 最后,你可以从Application Kit中尝试NSAttributedString的加载方法(比如initWithURL:options:documentAttributes:error :)。 这些方法试图加载纯文本文件,并返回使用的编码。 它们可以用在或多或less任意的文本文件上,如果你的应用程序没有特别的文本专业知识,那么值得考虑。 它们可能不适合基础级工具或不是自然语言文本的文档。 这里我遇到了一些问题。 有时我可以知道错误。 例如当我用UTF8的方式读取GB2312编码文件的时候,我会得到零,所以我知道错误。 但是当我用BIG5的方式读取GB2312编码文件的时候,我不知道这个错误。 NSAttributedString的init方法可能适用于Mac,但是当涉及到iOS时,它需要iOS7,不太好。 我也search它,并find一些这样的讨论cocoa ,也可以在Mac上。 那么在iOS上呢?

在iOS上使用AVCodec将原始YUV420P编码为h264

我正尝试将从CMSampleBuffer收集的单个YUV420P图像编码到AVPacket以便我可以通过RTMP在networking上发送h264video。 发布的代码示例似乎工作,因为avcodec_encode_video2返回0 (成功),但got_output也是0 ( AVPacket是空的)。 有没有人有任何经验与编码video在iOS设备上,可能知道我在做什么错了? – (void) captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection { // sampleBuffer now contains an individual frame of raw video frames CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); CVPixelBufferLockBaseAddress(pixelBuffer, 0); // access the data int width = CVPixelBufferGetWidth(pixelBuffer); int height = CVPixelBufferGetHeight(pixelBuffer); int bytesPerRow = CVPixelBufferGetBytesPerRowOfPlane(pixelBuffer, 0); unsigned char *rawPixelBase = (unsigned char *)CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, […]

NSNonLossyASCIIStringEncoding返回nil

我正在iOS中使用默认的emojis。 我能够使用NSNonLossyASCIIStringEncoding编码成功地编码和解码默认表情符号。 当我用简单的文本发送emojis时它的工作正常,但是当在string中添加一些特殊字符时返回nil。 我如何使它工作? 代码 : testString=":;Hello \ud83d\ude09\ud83d\ude00 ., <> /?\"; NSData *data = [testString dataUsingEncoding:NSUTF8StringEncoding]; NSString *strBody = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding]; // here strBody is nil

Google地图path编码

我试图突出两条多段线之间的区域,如下所示: 我计算了左右多段线。 为了突出显示内部,我正在使用一个多边形,左侧的点加上右侧的多边形(正确closures多边形)。 GMSMutablePath没有反转数组的function,所以我这样做了: for (NSUInteger i1 = 0; i1 < [reversedRight count]/2; i1 ++) { NSUInteger i2 = [reversedRight count]-i1; CLLocationCoordinate2D coord1 = [reversedRight coordinateAtIndex:i1]; CLLocationCoordinate2D coord2 = [reversedRight coordinateAtIndex:i2]; [reversedRight replaceCoordinateAtIndex:i1 withCoordinate:coord2]; [reversedRight replaceCoordinateAtIndex:i2 withCoordinate:coord1];} GMSMutable Arrays也没有组合。 所以我将它们转换为一个编码的string,并将它们连接起来: NSString *pathLeftSt = pathLeft.encodedPath; NSString *pathRighSt = reversedRight.encodedPath; NSString *spaceASCII = @"32"; NSString *combinedPaths = […]

json_encode相当于objective-c

我需要写相当于这个PHP代码 json_encode(utf8_encode()) 在目标-c 我已经实现了相当于utf8_encode [NSString stringWithCString:[testString cStringUsingEncoding:NSUTF8StringEncoding] encoding:NSASCIIStringEncoding] 所以现在,我需要实现相当于json_encode的php函数。 input:“http://www.mydomain.com/s?c=Théâtre,Cinéma” 预期输出:“http://www.mydomain.com/s?c=Th\u00c3\u00a9\u00c3\u00a2tre,Cin\u00c3\u00a9ma” 有没有人有一个有效的方法来做到这一点?

检查NSData是否包含ASCII或UTF8编码

我正在检索包含UTF8或ASCII编码文本的HTML。 对于最常见的使用,它是ASCII解码,可以正确显示文本: NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding]; 现在我有另一个UTF8编码的HTML页面,所以我必须使用: NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 加载网站时,我检索什么样的编码是随机的。 我的问题是,有没有办法来检查NSData什么样的解码是正确的使用? 所以我知道我需要使用哪种编码types。 日Thnx!

NSXMLParserparsing使用Windows-1256编码的xml文件

我想parsingrss文件在Windows-1256“编码,但它不被parsing器读取我做了很多parsingUTF8编码,但只有这不工作,为什么? rss文件与Windows-1256 解决的办法是 NSString *myStr = [[NSString alloc] initWithData:myData encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingWindowsArabic) ]; myStr = [myStr stringByReplacingOccurrencesOfString:@"encoding=\"windows-1251\"" withString:@""]; NSData* aData = [myStr dataUsingEncoding:NSUTF8StringEncoding]; NSXMLParser *parser = [[NSXMLParser alloc] initWithData:aData];

AVMetadataItem的编码

我有一个AVMetadataItem有CP1251(西里尔)编码的字段。 读取item.stringValue后,我得到垃圾 – 错误编码的string。 我已经尝试将该string转换为原始的UTF8,然后使用CP1251编码创build一个新的string – 没有运气,结果是零。 尝试采取item.dataValue – 没有骰子,它包含一个原始列表数据(从bplist …开始)。 任何想法都非常赞赏。 提前致谢。

将具有重音字符的NSString转换为CString

我有一个NSString的价值何塞(在e的重音)。 我尝试将其转换为Cstring,如下所示: char str [[myAccentStr length] + 1]; [myAccentStr getCString:str maxLength:[myAccentStr length] + 1 encoding:NSUTF32StringEncoding]; 但str最终是一个空string。 是什么赋予了? 我也试过UTF8和UTF16。 它会在稍后被传递给另一个函数,当funcsion调用它时,尺寸会变成零。

修补程序内购买黑客; 卡在第四步

正如我们许多人所知道的那样,苹果最近出现了一种情况,黑客可以免费获得任何应用内购买。 苹果最近发布了这个文档描述如何修补它,但我有点困惑在第四步,并会感谢任何帮助。 第一步是下载他们的补丁.h和.m,将其包含在您的项目中,并将其与安全框架链接。 好的,好的,明白了。 然后苹果说: 4. Provide a base64 encoder, a base64 decoder, and the action to perform when validation succeeds. 关于编码器的部分到底意味着我应该做什么? (validation成功时执行的操作对我来说很清楚。)当然,我会在类中看到名为base64_encode和base64_decode的函数。 但是这是什么要求呢? 这就像我知道的一个特殊的PIN码,以防止黑客? 我不确定在这里做什么。 当然,我得到编码和解码的整体概念,但不是如何在这种情况下正确生成编码和解码的编程细节。 苹果公司的代码写道,如果这有助于任何: – (NSString *)encodeBase64:(const uint8_t *)input length:(NSInteger)length { #warning Replace this method. return nil; } – (NSString *)decodeBase64:(NSString *)input length:(NSInteger *)length { #warning Replace this method. return nil; […]