Someone on the team here just reminded me that we do have a very basic form of 
encoding detection here as well: just looking for the BOM at the beginning of 
the data.

- Tony

> On Jun 21, 2017, at 9:55 AM, Tony Parker via swift-corelibs-dev 
> <swift-corelibs-dev@swift.org> wrote:
> 
> Our preferred approach so far is to mirror Foundation as closely as possible.
> 
> I don’t know if we want to implement stringEncodingForData as part of 
> swift-corelibs-foundation. In any case, we are trying to avoid bringing in as 
> few dependencies outside of the Swift project itself as possible, to keep 
> Foundation as low level as possible for stability, ease of use, and ease of 
> portability.
> 
> - Tony
> 
>> On Jun 21, 2017, at 9:51 AM, Andy Best <andybest....@gmail.com 
>> <mailto:andybest....@gmail.com>> wrote:
>> 
>> Is the preferred approach to mirror Foundation as closely as possible (e.g. 
>> under Linux basically do nothing), or is implementing something like 
>> stringEncodingForData under the hood preferable in this case?
>> 
>> On 21 June 2017 at 17:43, Tony Parker <anthony.par...@apple.com 
>> <mailto:anthony.par...@apple.com>> wrote:
>> Hi Andy,
>> 
>> 
>>> On Jun 21, 2017, at 7:39 AM, Andy Best via swift-corelibs-dev 
>>> <swift-corelibs-dev@swift.org <mailto:swift-corelibs-dev@swift.org>> wrote:
>>> 
>>> Hey,
>>> 
>>> I've been looking at the init(contentsOfFile, usedEncoding) initializer for 
>>> NSString in corelibs-foundation.
>>> 
>>> Am I right in thinking that this method should use some method to attempt 
>>> to detect the character encoding of the file before returning a decoded 
>>> String?
>> 
>> In this case, the Foundation implementation just looks at an extended 
>> attribute of the file to see if it contains the encoding. If it doesn’t have 
>> the xattr then we don’t attempt to guess (name of xattr is 
>> “com.apple.TextEncoding”).
>> 
>> Foundation has another API which attempts to guess the encoding of a data 
>> blob, but I think we left it out of the swift-corelibs stubs:
>> 
>> + (NSStringEncoding)stringEncodingForData:(NSData *)data
>>                           encodingOptions:(nullable 
>> NSDictionary<NSStringEncodingDetectionOptionsKey, id> *)opts
>>                           convertedString:(NSString * _Nullable * 
>> _Nullable)string
>>                       usedLossyConversion:(nullable BOOL 
>> *)usedLossyConversion API_AVAILABLE(macos(10.10), ios(8.0), watchos(2.0), 
>> tvos(9.0));
>> 
>> - Tony
>> 
>>> 
>>> If so, I've been working on a pure Swift library to detect string 
>>> encodings, and wondered if continued work on it might be useful for 
>>> implementing this missing method?
>>> 
>>> Andy
>>> _______________________________________________
>>> swift-corelibs-dev mailing list
>>> swift-corelibs-dev@swift.org <mailto:swift-corelibs-dev@swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-corelibs-dev 
>>> <https://lists.swift.org/mailman/listinfo/swift-corelibs-dev>
>> 
>> 
> 
> _______________________________________________
> swift-corelibs-dev mailing list
> swift-corelibs-dev@swift.org
> https://lists.swift.org/mailman/listinfo/swift-corelibs-dev

_______________________________________________
swift-corelibs-dev mailing list
swift-corelibs-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-corelibs-dev

Reply via email to