이 아이폰 OS 8 및 OS X 10.10에서
NSString
에 새로운 API :
오브젝티브 C는
+ (NSStringEncoding)stringEncodingForData:(NSData *)data
encodingOptions:(NSDictionary *)opts
convertedString:(NSString **)string
usedLossyConversion:(BOOL *)usedLossyConversion;
스위프트
open class func stringEncoding(for data: Data,
encodingOptions opts: [StringEncodingDetectionOptionsKey : Any]? = nil,
convertedString string: AutoreleasingUnsafeMutablePointer<NSString?>?,
usedLossyConversion: UnsafeMutablePointer<ObjCBool>?) -> UInt
는 이제하도록 할 수 있습니다 프레임 워크는 추측을하고 내 경험으로는 정말 잘 작동합니다!헤더에서
(문서가 공식적 WWDC Session 204 (page 270)에 언급 된 순간 방법을 명시하지 않지만 :
- 이 목록의 3 번째 옵션을 지정하지 않고 제안 문자열 인코딩의 배열 (, 모든 문자열 인코딩은 고려되지만 배열에있는 인코딩은 더 높은 선호도를 갖습니다. 또한 배열의 인코딩 순서가 중요합니다. 첫 번째 인코딩은 배열의 두 번째 인코딩보다 높은 우선 순위를가집니다.
- 배열 사용하지 않는 문자열 인코딩 (이 목록의 문자열 인코딩은 c onsidered 전혀)
는
- 만 제안 된 문자열 인코딩은 손실이 허용되는지 여부를 나타내는
- 부울 옵션을 고려하는지 여부를 나타내는 부울 옵션은
- 신비에 대한 substitude하기 위해 특정 문자열을 제공하는 옵션은
- 현재의 바이트 사용자의 언어
- 사전의 값 (예를 들어 잘못된 유형이있는 경우 데이터가 윈도우
에 의해 NSS의 값을 생성 여부를 나타내는 부울 옵션 tringEncodingDetectionSuggestedEncodingsKey가 배열이 아님) 예외가 throw됩니다.
사전의 값을 알 수없는 경우 (예 : 제안 된 문자열 인코딩의 값이 유효한 인코딩이 아님) 값은 무시됩니다.
예 (스위프트) : 그것의 이유가처럼 그냥 디코딩 된 문자열을 원하는 인코딩에 대해 상관하지 않는 경우
var convertedString: NSString?
let encoding = NSString.stringEncoding(for: data, encodingOptions: nil, convertedString: &convertedString, usedLossyConversion: nil)
는 let encoding =
출처
2014-11-04 16:53:25
HAS
을 제거 할 수 있습니다 보인다 아직 공식 아니야. 나는 그것을 반환하는 -2147482362 PDF NSData 인코딩으로 실행했습니다. – FireDragonMule
그것이 작동하도록 의도되었는지는 확실하지 않습니다. pdf는 문자열이 아니며이 메서드는 NSData에서 문자열에 대한 인코딩을 찾습니다. 당신의 의도는 무엇입니까? – HAS
NSData로 SDK를 통해 PDF를 가져오고 있습니다. 난 그냥 인코딩이 무엇인지 또는 거기에 인코딩 경우 모르는 원인이 webview 바로 지금 표시 문제가 있습니다. – FireDragonMule