diff --git a/CHANGELOG.md b/CHANGELOG.md index 51f1b2411..f78da1f2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ develop - Improve file encoding detection. - Update default priority order of encoding detection. - Improve encoding compatibility check. +- Better error message on file opening. ### Fixes diff --git a/CotEditor/Sources/NSString+CEEncoding.m b/CotEditor/Sources/NSString+CEEncoding.m index 0a3559751..3d630fbe1 100644 --- a/CotEditor/Sources/NSString+CEEncoding.m +++ b/CotEditor/Sources/NSString+CEEncoding.m @@ -129,6 +129,10 @@ const char kUTF32LEBom[4] = {0xFF, 0xFE, 0x00, 0x00}; } } + if (outError) { + *outError = [NSError errorWithDomain:NSCocoaErrorDomain code:NSFileReadUnknownStringEncodingError userInfo:nil]; + } + *usedEncoding = NSNotFound; return nil; } diff --git a/Tests/EncodingDetectionTests.swift b/Tests/EncodingDetectionTests.swift index d394cdaf6..4c5416a8d 100644 --- a/Tests/EncodingDetectionTests.swift +++ b/Tests/EncodingDetectionTests.swift @@ -102,7 +102,14 @@ class EncodingDetectionTests: XCTestCase { let data = NSData() var encoding: NSStringEncoding = 0 - let string = try? NSString(data: data, suggestedCFEncodings: [], usedEncoding: &encoding) + var string: NSString? + do { + string = try NSString(data: data, suggestedCFEncodings: [], usedEncoding: &encoding) + } catch let error as NSError { + XCTAssertEqual(error.domain, NSCocoaErrorDomain) + XCTAssertEqual(error.code, NSFileReadUnknownStringEncodingError) + XCTAssertNotNil(error.localizedDescription) + } XCTAssertNil(string) XCTAssertEqual(Int(encoding), NSNotFound)