在Swift中使用OEM 850读取文件

问题描述 投票:-3回答:1

我必须读取Swift / Cocoa中的文本文件,其编码为OEM850。有人知道如何执行此操作吗?

swift cocoa encoding
1个回答
0
投票

您可以首先将文件作为原始数据读取,然后根据您的编码将该数据转换为字符串值。您的情况下有细小的皱纹:

有两种类型代表已知的字符串编码,NSStringEncoding(在Swift中为NSStringEncoding)和String.Encoding。 Apple仅直接将已知编码的子集定义为String.Encoding / CFStringEncoding值。其余的已知编码具有CFStringEncoding值,并提供了函数NSStringEncoding将其映射到String.Encoding。不幸的是,OEM 850仅由CFStringEncoding ...]直接提供

听起来比实际更糟。在Objective-C中,您可以使用以下代码获取所需的编码:

CFStringConvertEncodingToNSStringEncoding()

注:“ DOS Latin 1”是“ OEM 850”所指代的同一编码的名称之一(列表请参见CFStringConvertEncodingToNSStringEncoding()),是Apple因此选择的NSStringEncoding

] >

在Swift中,这更加混乱:

CFStringEncoding

一旦完成编码,剩下的就很简单了,没有错误检查

大纲是:
NSStringEncoding dosLatin1 = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingDOSLatin1);

使用真实代码,您必须

检查文件读取和转换是否成功。如果读取失败,则从Swift中的URL读取原始数据将引发错误,将数据转换为字符串会产生可选的(Wikipedia),因为转换可能会失败。

HTH

© www.soinside.com 2019 - 2024. All rights reserved.